Liczba postów: 821
Liczba wątków: 30
Dołączył: 29-08-2009
ok. sprawdź testowo czy biblioteka encodera jest poprawnie zainstalowana. najprościej - czy potrafisz skorzystać z przykładów dołączonych do biblioteki.
W jaki sposób ją zainstalowałeś (gdzie, czy zgadza się nazwa katalogu, itp)
MAc
Liczba postów: 1,051
Liczba wątków: 13
Dołączył: 20-09-2009
Dziękuję za zainteresowanie.Już, mam program skompilowany bez błędów.
Nie umiem kopiować katalogu.Tam gdzie jest do pobrania katalog encodera wszystkie pliki otwierałem i dopiero cały tekst kopiowałem do arduino.exe.Potem zapisywałem jako plik.Stworzyłem katalog Encoder_Polling i wszystkie pliki do katalogu.Katalog Encoder_Polling do katalogu libralies w katalogu arduino_1.0.5.
Coś pisałeś o instalowaniu.Pobrałem arduino do windows ver.1.0.5. rozpakowałem i to wszystko.klikam na arduino.exe i od razu jestem w otartym okienku.Mam drugą wersję tego programu którą dostałem przy zakupie arduino uno na CD i tą wersję się instaluje.Która jest dobra tego nie umiem określić.Obecnie wykorzystuję wersję bez instalacji pobraną z arduino.Na niej testowałem miganie diody.Teraz biorę się za montaż drutowy .Trzeba to wszystko do kupy połączyć,ale już jestem zadowolony.Mam skompilowany program.Robię to wszystko na laptopie LENOVO w systemie XP.Już jestem bogatszy w wiedzę.Mac, dziękuję za zainteresowanie.Pozdrawiam
Andrzej
Liczba postów: 821
Liczba wątków: 30
Dołączył: 29-08-2009
Na przyszłość - na githubie - tam gdzie ściągałeś encoder, po prawej stronie na dole jest przycisk "download ZIP". ściągasz nim całą bibliotekę. W środku jest katalog o nazwie takiej jak nazwa biblioteki - i cały katalog wrzucasz albo do folderu "libraries" w katalogu z rozpakowanym "arduino IDE" albo do katalogy "libraries" w folderze z Twoimi projektami.
Ja wrzucam do własnego katalogu, bo mi się wtedy nie mieszają oryginalne biblioteki z dodatkowymi i nie gubię się w czasie aktualizacji.
Uwaga - czasami zdarza się, że nazwa katalogu z Githuba nie zgadza się z nazwą bibloteki i trzeba ją zmienić - ale w tym przypadku jest poprawnie.
MAc
mrn
Liczba postów: 1,051
Liczba wątków: 13
Dołączył: 20-09-2009
Witam Maćku.Dzięki. Wykonałem wg twojej instrukcji i katalog oryginalny jest już pobrany, rozpakowany i siedzi na swoim miejscu.Mam takie efekty na wyświetlaczu na dolnej linijce 10.000.000MHz, na górnej STEP= 10,100,1000,10000,10,100,1000 cały czas wędruje.Coś trzeba chyba zrobić z pinem 6.
int encoderPin_A = 4;
int encoderPin_B = 5;
int PushButt = 6; // pin encodera PushButton
To jest zmiana kroku,ale na co zamknąć ten przełącznik. Na zdjęciach nie widać.Są tam jakieś rezystory i kondensatory
Może Ktoś ma jakieś sugestie.Za wszystko dziękuję.
Andrzej
Liczba postów: 821
Liczba wątków: 30
Dołączył: 29-08-2009
30-09-2013, 13:58
(Ten post był ostatnio modyfikowany: 30-09-2013, 14:28 przez SP9MRN.)
wieczorem popatrzę
Istotny jest ten kawałek:
void obsluga_buttona()
{
if (digitalRead(PushButt))
{
// nie wcisniety - nierob nic
}
else
{
//wcisniety
.............................................
}
Z niego wynika, że jeżeli button jest 1 (high) to ma nie robić nic, jeżeli low, to z każdym kolejnym naciśnięciem zmienia krok. U ciebie wisi w powietdzu, zatem skacze po kolejnych krokach.
W kodzie nie widzę, żeby był wewnętrznie podciągany, zatem wystarczy podłączyć go (tzn pin6) przez 10k do plusa i przestanie skakać.
Generalnie tak:
1. 10k do +
2. druki koniec opornika do pin6
3. włącznik między pin6 a masą
no pierwszy rysunek w ulubionej magicznej książce:
http://pgdev.pighixxx.com/ABC/SET/s1.pdf
tu są wszystkie:http://www.pighixxx.com/abc-arduino-basic-connections/ wystarczy klinąć w numerek "seta" to się pdf ściągnie.
Polecam wszystkim.
73
MAc
Liczba postów: 1,051
Liczba wątków: 13
Dołączył: 20-09-2009
Idzie jak po sznurku.Twoja instrukcja działa. Po włączeniu jest 10Hz i trzyma.Dopiero po krótkim zwarciu do gnd następuje zmiana na 100Hz.I tak dalej.Myślę,że pin4 i pin5 też trzeba podciągnąć przez 10k do +5V i podłączyć impulsator. Później kupię prawdziwy encoder copal.Mam w tej chwili podłączone:arduino uno, I2C, wyświetlacz 1602, przycisk (zmiana kroku), skompilowany i wgrany program.Zostało podpiąć impulsator (mam taki za 3zł) i moduł AD9850.Pozdrawiam.
Andrzej
Liczba postów: 821
Liczba wątków: 30
Dołączył: 29-08-2009
30-09-2013, 16:32
(Ten post był ostatnio modyfikowany: 30-09-2013, 16:32 przez SP9MRN.)
na pierwszy rzut oka w kod - to encoder jest normalnie - wspólnym do masy a A i B do odpowiednich nóg. może nawet jest to bez znaczenia bo ciągle porównuje stan poprzedni (przed obrotem) z obecnym.
dodatkowo do poprzedniego posta:
Zamiast podłączania dodatkowego rezystora można włączyć wewnętrzny rezystor w Arduino. Spełni tą samą funkcję co zewnętrzny - potrzebna jest dodatkowa linijka kodu:
digitalWrite(PushButt, HIGH);
wpisana zaraz po:
pinMode(PushButt, INPUT);
ona ustawia na tym pinie stan wysoki. Podłączamy tylko przycisk do masy.
Dolny rysunek pod napisem "using internal pullups" w załączonym pedeefie.
MAc
mrn
Liczba postów: 1,051
Liczba wątków: 13
Dołączył: 20-09-2009
30-09-2013, 19:29
(Ten post był ostatnio modyfikowany: 30-09-2013, 19:29 przez SP6AUO.)
Wykonane.Jest HIGH i działa.Jest jeszcze jeden problem.Podczas weryfikacji
int dir = encoder_data(); //sprawdz Encoder
if(dir > 0) //jeśli w prawo to ...
{
Freq = Freq + Krok; //zwieksz f o krok
}
else if (dir { TU POKAZUJE BŁĄD
Freq = Freq - Krok; //zmniejsz f o krok
}
else
{
}
delay(50);
tak dopisałem
else if (dir < 0)
{
i to zweryfikowało.
Andrzej
Liczba postów: 821
Liczba wątków: 30
Dołączył: 29-08-2009
Dokładnie tak - ewidentnie zjedzony przy kopiowaniu na stronę kawałeczek kodu.
widać to wyraźnie wskutek przesunięcia klamry do górnej linijki.
;-)
MAciek
Liczba postów: 1,051
Liczba wątków: 13
Dołączył: 20-09-2009
Witam Maćku.Mam jeszcze taki problem.Górna linijka świeci,a dolna cały czas mruga.
Czy znajdzie się na to jakaś rada.
Andrzej