Witam. Jak sterować wyjściami impulsatora w taki sposób by kręcąc w prawo załączony był potrc.1 a w lewo portc.2 . W momencie braku ruchu mają być porty wyłączone. Nie mam pomysłu jak to zrealizować ;-( Impulsator: If Pind.4 = 1 Then Incr Enkoder Gosub Wyc End If If Pind.4 = 0 Then Decr Enkoder Gosub Wyc1 End If Return Wyc: ????? Portc.1 Return Wyc1: ???? Portc.2 Return
|
|||
Obsługa Enkoderów jest
Obsługa Enkoderów jest przybliżona tu na stronie.
Podprogram zwraca wartość która może mieć wynik ujemny dlatego nalezy zadeklarować zmienną typu Integer (w przykładzie jest to Rezultat). Do oceny potrzebuje jeszcze zmiennej typu Byte (tu nazywa się Tryb). I1 i I2 to wyprowadzenia kontrolera do których podłaczony jest enkoder.
W pętli głównej Twojego programu wpisujesz skok do tego podprogramu, a potem analizujesz zwróconą wartość zmiennej Rezultat.
Mozesz wszystko spiąć razem w podprogramie Impulsator Byleby skok do niego dokonywał się cyklicznie tak by przy braku kręcenia zmienna Rezultat przybrała wartość = 0 (wtedy porty się wyłącza).
Można to zrobić inaczej, ale to już powinno Cie jakoś naprowadzić.
Ps. Jeśli dasz warunek
If Rezultat <> 0 Then..
to będziesz miał reakcję na jakiekolwiek poruszenia enkodera co możesz wykorzystać osobno np. do uruchomienia podświetlania, lub jakiegoś innego "wybudzenia"BARTek
Moja strona
Będzie mały problem , bo
Będzie mały problem , bo enkoder obsługiwany jest przerwaniem INT1 i nie wiem czy tak to się uda wykonać. Sprawdzę kod w praktyce i zobaczę . A może jest jakiś inny sposób, by w czasie obrotu w lewo lub w prawo ustawiane było odpowiednie wyjście w stan załaczenia.
Może tak :)
Może tak, nie testowałem w praktyce. Parametr Gifr : General Interrupt Flag Register(można poczytać tutaj.. W przerwaniu, jeszcze raz sprawdza czy Port który jest też wejściem przerwania jest w stanie niskim, niby niepotrzebne ale podobno przydaje się w kiepskich enkoderach, wywal na próbę i napisz jak działa bo jestem ciekawy :D
Za decyzję ustawienia portów jak widać odpowiada porównanie poprzedniej wartości zmiennej Encounter. Jesli nie ma różnicy porty sa resetowane w kółko. Możesz też ustawiać porty już w przerwaniu a resetowac w głównej pętli po powrocie, możesz resetować po powrocie z jakimś opóźnieniem ..jeśli obrotów miałoby być więcej niż pomieści Integer to trzeba by pomyśleć o obsłudze przepełnienia. Nie napisałeś co to ma robić :) Czujnik czy manipulator do menu..
BARTek
Moja strona
4 warianty obsługi enkodera w Bascom
Witam. Do nowego projektu potrzebny mi będzie enkoder i wpadłem na pomysł by przetestować naraz znane mi procedury obslugi. Przy okazji porównam wady i zalety oraz długość kodów.
Enkoder cały czas podlączony jest do tych samych pinów. Zmieniam cały czas tą samą zmienną w tym samym miejscu wyświetlacza.
Na pierwszy ogień poszlo użycie zewnętrznego przerwania. Działa bardzo dobrze jeśli podłaczy się kondensatorki filtrujące (podłączyłem kupione przez pomyłke 22nF, chciałem kupić 22pF :D ) Bez kondensatorków wyników można sie wystraszyć. Z kondensatorkami jak ręką odjał i działa super. Krótki kod..
Jako drugie przetestowałem instrukcje
Encoder
wbudowana w Bascom. Wymaga by piny enkodra nalezały do tego samego portu. Działa kiepsko, niestabilnie, czasem zmniejsza wartość zamiast zwiększać...Trzeci to trochę okrojony na potrzeby testów (bo w oryginale obsługuje tez przycisk enkodera z rozpoznaniem długości przyciśnięcia) sposób z wykorzystaniem Timera. Działa zawsze i ze wszystkim, pewnie nawet i pod wodą :D Funkcja w kazdym miejscu programu zapytana o stan enkodera zwraca wartość.
Ilość linii kodu może zniechęcać ale zapewniam że różnice pomiedzy kodami to odpowiednio 11%, 10%, 17% i dla ostatniego 13% flasha wliczając cały czas obsługę LCD więc prosze patrzeć na różnice. Przerwanie Timera w programie może słuzyć do odmierzania czasu dla reszty układu..
Teraz pora na czarnego konia tych zawodów. Obsługa by Mirley :D
Działa nadzwyczaj dobrze :) do zwykłych regulacji idealny jeśli nie ma się wolnego zewnętrznego przerwania.
Zapomniałem dodac że enkoder na którym testuję kosztował 2zł80gr. :D
Wszystkie można sobie samemu sprawdzić. Jesli ma ktoś jakiś sprawdzony sposób obsługi to chętnie przetestuję :)
BARTek
Moja strona
Sejf jak z filmów o gangu Olsena :D
Haha to nie żart! :D
Ten sejf da się otworzyć jak przyłożysz ucho albo stetoskop jak Olsen.
Działa tak. Gdy kręcisz pokrętłem sejfu ten cichutko tyka. Dzwięk to prawdziwy dzwięk z zegarka przekonwertowany w postać binarna i zapisany w eepromie procesora. Dzwięk odtwarzany jest za posrednictwem dwóch pinów procesora i kondensatora. Ja podłączyłem do tego jedną słuchawkę.
Jak w prawdziwym sejfie trzeba najpierw pokrecić w prawo i ustawić Code(1) potem w lewo i ustawić Code(2). Ostatecznie znów w prawo i ustawić Code(3). Jesli jesteś pewien kodu, naciska się przycisk enkodera i drzwi się otwierają. Jesli gdziekolwiek sie pomylisz kosztuje Cię to czas zdefiniowany w programie jako Safetime.
Okazuje się jednak że kodu nie musisz znać. Jesli naciśniesz na 3 sekundy przycisk enkodera to uaktywni sie "Olsen Mode" :D
W trybie Olsena można usłyszeć malusieńki dodatkowy "tyk" gdy kod cyfry sie zgadza :D Wtedy trzeba juz kręcić w druga stronę.
Lcd jest tylko do celów szkoleniowych dla włamywaczy :D i gdy u góry w programie wpisze się Lcd_on_board = 0 to nie będzie on w ogóle skompilowany i kod jest dużo mniejszy. Można dopisac sobie procedurę zmiany kodu, której nie potrzebowałem. Kod jest w eepromie.
Taka umiejętnościa otwierania sejfów można błysnąć przed towarzystwem :D ..
Co do odtwarzania dzwięku..okazuje się, że jeśli w swoim projekcie masz nieuzywana prawie pamięć Eeprom to możesz pokusić sie o dodanie dzwięku do niego. Zastąpić jakiś piszczek ladnym jinglem. Plik w formacie wav konwertuje ten program do bin.
Pamięci jest trochę potrzebne ale jeśli masz wolna to dlaczego nie?
Pierwotnie to czytało z zewnętrznych pamięci I2c, przerobiłem sobie do tego pomysłu i w wiekszych prockach nie takie rzeczy można będzie grać :D
W dobie pamięci flash to żadne odkrycie ale może niepotrzebna własnie komuś ich obsługa, ma plac w eepromie..
Pozdrawiam.
BARTek
Moja strona
moje dywagacje z impulsatorem ;-)
Opisałem tutaj
ideologia inna ale sprawa identyczna ;-D
"Cierpliwym być musisz, by wiedzę zgłębiać tajemną, gdyż ciemna strona mocy niszczącą i silną jest.".
Enkodery obrotowe c.d.
W międzyczasie połączyłem kilka pomysłów. Jeden taki, że stan pinów sprowadzony jest do wartości najmłodszych bitów. Pozbywamy się instrukcji And.
Drugi to ciekawostka oparta na przerwaniu PCINT
Obydwa opisałem u siebie na stronie i pozwoliłem sobie podlinkować Mirleya i Kaktusa stronę.
BARTek
Moja strona