Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[BASCOM]Encoder i wykrywanie zmiany kierunku

KrisNext 13 Cze 2016 11:33 936 3
  • #1 13 Cze 2016 11:33
    KrisNext
    Poziom 11  

    Witam
    Mam pytanie dotyczące obsługi encodera...
    Próbuje napisać programik którego działanie ma wyglądać następująco

    Obracam encoderem w prawo lub w lewo na wyświetlaczu na pierwszej pozycji zmieniają się kolejno cyfry od 0 do 9 lub odwrotnie w pętli. Przy zmianie kierunku
    pierwsza cyfra na wyświetlaczu zostaje "zamrożona" a zmianie podlega druga cyfra, znów w pętli. i tak dalej. Każda zmiana kierunku powoduje przeskok na kolejną pozycje wyświetlacza

    Napisałem programik który bezbłędnie obsługuje encoder wywołując zamiennie dwa podprogramy zależnie od wykrytego kierunku niestety nie wiem jak wykrywać zmianę kierunku. tak by osiągnąć opisaną wyżej funkcjonalność

    Próbowałem w podprogramie umieścić zwiększanie wartości zmiennej odpowiedzialnej za pozycje na wyświetlaczu ale niestety procedura encodera wywołuje podprogram przy każdym impulsie a to oznacza że wspomniana zmienna jest powiększana przy każdym impulsie...

    Macie jakieś pomysły jak to rozwiązać?

    Dodano po 1 [minuty]:

    Zapomniałem dodać że chodzi o program w Boscomie

    0 3
  • #2 14 Cze 2016 15:49
    emarcus
    Poziom 35  

    KrisNext napisał:
    Witam
    Mam pytanie dotyczące obsługi encodera...
    .................

    Przy zmianie kierunku pierwsza cyfra na wyświetlaczu zostaje "zamrożona" a zmianie podlega druga cyfra, znów w pętli. i tak dalej. Każda zmiana kierunku powoduje przeskok na kolejną pozycje wyświetlacza



    Jest to w zasadzie prosta operacja, lecz brakuje tu zasadniczego warunku – kierunku zliczania impulsów.
    Jeżeli kierunek obrotu encodera powoduje/ wskazuje na zmianę cyfry (co w normalnym zastosowaniu zmieniałby wartośc zmiennej przyjętej jako licznik), to w jakim kierunku będą liczone impulsy dla tej wskazanej cyfry?
    Mając powiedzmy dwu-cyfrowy wyświetlacz spowodujesz że kręcąc dla przykładu ‘w lewo’ kontrolujesz lewy (1) wyświetlacz, krecąc encoder ‘w prawo’ , kontrolujesz odpowiednio ‘prawy’ (2) wyświetlacz. Kiedy zatem decydujesz czy zmienna przyporządkowana jednemu wyświetlaczowi (wybranemu przez kierunek kręcenia), ma byc incrementowana albo decrementowana. Z twojego opisu to nie wynika.

    e marcus

    0
  • #3 14 Cze 2016 16:26
    KrisNext
    Poziom 11  

    Hello
    Być może nieprecyzyjnie się wyraziłem...
    Wyobraźmy sobie zamek szyfrowy w sejfie... mamy pokrętło z cyferkami i ustawiając szyfr kręcimy w dowolna stronę byle by zatrzymać gałkę na odpowiedniej cyferce potem zmieniamy kierunek na przeciwny i ustawiamy kolejną i tak dalej...
    U mnie ma być podobnie
    kręcę encoderem (obojętnie w którą stronę) do momentu gdy na pierwszej pozycji wyświetlacza pojawi się żądana cyfra jako że cyferki zmieniają się w pętli to zawsze "ukręcimy" żądaną cyfrę bez względu na to od której zaczynamy. Następnie gdy na pierwszej pozycji pojawi się to co chcemy np. cyfra 5 zmieniamy kierunek kręcenia (pierwsza pozycja zostaje zamrożona) a zmieniają się cyferki na drugim polu poczynając od 4 lub 6 zależnie od kierunku (kontynuujemy zmiany w górę lub w dół) jak dojedziemy do wymaganej cyferki na drugiej pozycji zmieniamy kierunek i przeskakujemy na pozycje 3 i tak dalej ..

    0