Obsah:

Rotační kodér - pochopte a používejte (Arduino/jiný ΜKontrolér): 3 kroky
Rotační kodér - pochopte a používejte (Arduino/jiný ΜKontrolér): 3 kroky

Video: Rotační kodér - pochopte a používejte (Arduino/jiný ΜKontrolér): 3 kroky

Video: Rotační kodér - pochopte a používejte (Arduino/jiný ΜKontrolér): 3 kroky
Video: 3D printed MEDIA CONTROL volume knob - Arduino basics 2024, Červenec
Anonim
Rotační kodér - pochopte a používejte (Arduino/jiný ΜKontrolér)
Rotační kodér - pochopte a používejte (Arduino/jiný ΜKontrolér)

Rotační kodér je elektromechanické zařízení, které převádí rotační pohyb na digitální nebo analogovou informaci. Může se otáčet ve směru nebo proti směru hodinových ručiček. Existují dva typy rotačních kodérů: absolutní a relativní (inkrementální) kodéry.

Zatímco absolutní kodér vydává hodnotu úměrnou aktuálnímu úhlu hřídele, inkrementální kodér vydává krok hřídele a jeho směr. (V tomto případě máme inkrementální kodér)

Rotační kodéry jsou stále oblíbenější, protože v jednom elektrickém modulu můžete používat dvě funkce: Jednoduchý přepínač pro potvrzení provozu a rotační kodér pro navigaci, např. prostřednictvím nabídky.

Inkrementální rotační kodér generuje dva výstupní signály, zatímco se jeho hřídel otáčí. Podle směru vede jeden ze signálů druhý. (viz. níže)

Krok 1: Pochopení výstupních dat

Pochopení výstupních dat
Pochopení výstupních dat

Jak vidíte, když se hřídel kodéru začne otáčet ve směru hodinových ručiček, výstup A nejprve klesne na LOW a výstup B ho následuje. Ve směru proti směru hodinových ručiček se operace otočí opačně.

Nyní to musíme implementovat na našem µController (použil jsem Arduino Nano).

Krok 2: Vybudujte obvod

Vybudujte obvod
Vybudujte obvod
Vybudujte obvod
Vybudujte obvod

Jak jsem popsal dříve, výstupy vytvářejí VYSOKÝ a NÍZKÝ bok. Abychom získali čistý HIGH na datovém pinu A a B µController, musíme přidat Pull-Up odpory. Společný kolík C jde přímo na zem pro LOW bok.

K získání informací o interním přepínači (tlačítku) použijeme další dva piny. Jeden z nich jde do VCC a druhý na datový pin µController. Abychom získali čistý LOW, musíme také přidat datový kolík.

Je také možné použít interní Pull-Up a Pull-Down rezistory vašeho µController!

V mém případě vypadá pinout takto:

  • +3, 3V => +3, 3V (Arduino) (také +5V možné)
  • GND => GND (Arduino)
  • A => Pin10
  • B =>

    Kolík

    11

  • C => GND
  • SW =>

    Kolík

    12

Krok 3: Psaní kódu

int pinA = 10; // interní přepínač A int pinB = 11; // interní přepínač B int pinSW = 12; // přepínač (stisknutý kodér) int encoderPosCount = 0; // začíná na nule, změňte, pokud chcete

int positionval;

bool switchval; int mrotateLast; int mrotate;

neplatné nastavení () {

int mrotateLast = digitalRead (pinA); Serial.begin (9600); zpoždění (50); }

void loop () {readencoder (); if (readdswitch () == 1) {Serial.println ("Switch = 1"); }}

int readencoder () {

mrotate = digitalRead (pinA); if (mrotate! = mrotateLast) {// knoflík se otáčí if (digitalRead (pinB)! = mrotate) {// přepnutí A změněno jako první -> otáčení ve směru hodinových ručiček kodérPosCount ++; Serial.println ("otočeno ve směru hodinových ručiček"); } else {// přepínač B změněn jako první-> otáčení proti směru hodinových ručiček kodérPosCount--; Serial.println ("otočeno proti směru hodinových ručiček"); }

Serial.print ("Poloha kodéru:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; vrátit kodérPosCount; } bool čtecí spínač () {

pokud je stisknut přepínač (digitalRead (pinSW)! = 0) {//

while (digitalRead (pinSW)! = 0) {} // přepínač je aktuálně stisknutý switchval = 1; } else {switchval = 0;} // switch is unpressed return switchval; }

Nyní můžete kodér otočit a proměnná encoderPosCount se bude odpočítávat, pokud otáčíte ve směru hodinových ručiček, a odpočítávat, pokud otáčíte proti směru hodinových ručiček.

A je to! Jednoduše a užitečně.

Neváhejte změnit a provést kód. Můžete jej implementovat do svého projektu.

Rovněž nahraji projekt LED, kde jsem kodérem nastavil jas svých LED diod.

Doporučuje: