Jungimas paprastas - vidurinė koja į GND, kitos dvi kojos - tai A ir B. Ant A ir B užkabinami pull-up rezistoriai. Dabar, jei pajungsime oscilografą prie A ir B kojų ir pasuksime, pamatysime tokį vaizdą.
![]() |
Geltonas - A, Mėlynas -B |
Kaip matote, gauname du vienodus signalus tik pasislinkusius. Jei enkoderį suksime į kitą pusę, signalas gausis toks pats, tik iš kitos pusės. T.y. jeigu dabar kai A leidžiasi B būna 0V, tai sukant į kitą pusę, kai leisis B bus 5V. Žinant šį principą, labai lengva parašyti programą.
Parsisiųsti. Principas toks pats. Padarytas falling pertraukimas ant vieno iš dviejų kojų (A arba B). Falling reiškia, kad suveikia kai lygis keičiasi iš aukšto į žemą. Tada tikrinama ar kita koja tuo metu buvo aukštam ar žemam lygyje, ir pagal tai sprendžiama, ar pasukta pagal, ar prieš laikrodžio rodyklę.
Problema ta, kad programa nuskaito tik 1/4 visų būsenų. Tačiau man tai tik privalumas, nes pasukus rankenėlę vieną kartą (sukant jaučiasi toks tarsi treškėjimas, vienas kartas - tai vienas "stepas"), pereinama per visas 4 būsenas. Todėl jei nuskaitinėjant visas būsenas, pasukus vieną kartą, poz vertė pasikeistų per 4 vienetus.
Kita problema yra ta, kad kaip ir mygtukuose, enkoderiuose persijungiant būsenai atsiranda triukšmas, ir mikrovaldiklis tai gali interpretuoti kaip keletą pasukimų. Todėl juos reikia taip sakant "debouncinti".
Šis procesas gali būti dviejų rūšių : programinis, arba hardwarinis. Aš dažniausiai renkuosi hardwarinį, nes programavimas yra mano silpnoji pusė. Tam aš pasinaudojau tokia schema :
Viską sujungiame ir bandome |
![]() |
Rezultatai |
Sveikas Dariau,
AtsakytiPanaikintiGalvoju gal dar rasiu Tave. Norėjau paklausti gal žinai ar rotary encoderiai ant breakout board'o taip pat veikia? Schemą kurią bandau sujungti siūlo abu GND sulituoti, bet aš turiu rotary tiktais ant breakout'o ir ten vietoj GND/GND yra VCC/GND.. Ir atrodo kad negeneruoja signalų sukant :/.
Radau tokį: http://circuit-diagramz.com/wp-content/uploads/2017/02/Arduino-Rotary-Encoder-Wiring-pinout-comparison.jpg
Sveikas, ta nuoroda kurią radai tikrai keistai parodo rotary su breakout board, nes Vcc jam iš esmės nereikalingas (žinoma priklausomai nuo schemos gali reikėti pajungti ir VCC).
PanaikintiBet šiaip iš esmės ar su brekout board ar be, jie veikia identiškai. Spėju, kad ta breakout board tai tiesiog kontaktai išvesti. Gali būti kad VCC ir Switch yra du mygtuko išvadai, o GND, OUTA ir OUTB yra pačio enkoderio, dar vienas variantas kad GND ir Switch yra mygtuko, o VCC, OUTA ir OUTB enkoderio. Bet kokiu atveju jei turi multimetrą papraščiausiai būtų atsekti koks pin'as eina į kokią enkoderio koją(Galima ir pagal takelius bandyt pastebėti).
Žinoma visa tai veiks tik jeigu ta breakout board yra paprastas kontaktų išvedimas. Pažiūrėk ar yra kitoje pusėje ant breakout board kokių detalių, jei taip tai tada apskritai kitokiu būdu reikia pajunginėti.
Darius