0. Komponenty i niezbędne programowanie enkodera obrotowego z wałem popychającym

Wymagane komponenty:

{Produkt: 2000} {Produkt: 703}
  • - 2 diody LED
  • - 2 rezystory 1K Ohm

I. Jak używać modułu obrotowego enkodera z przełącznikiem wciskanym

Enkoder obrotowy to urządzenie generyczne, które umożliwia określenie położenia i prędkości kątowej fizycznie wykonywanego napędu oraz rejestrację pomiaru z procesora lub automatu, takiego jak Arduino .

Enkodery te składają się z dwóch pinów do przycisku (działa jak zwykły przycisk) i trzech pinów do enkodera. Trzy piny enkodera są podłączone jeden do masy, a pozostałe dwa do odpowiednich wejść, które wyznaczamy na płycie Arduino . Te dwa sygnały wychodzące z enkodera dają łącznie 4 kombinacje. 00, 01, 10 i 11. Jest to znane jako 2 bity kodu Graya.

Jeśli potraktujemy piny w kodzie binarnym, odczytujemy je jako 00, 01, 10 lub 11. Sekwencja wyjść enkodera, gdy obrócimy zgodnie z ruchem wskazówek zegara, to 00, 01, 11, 10

II. Eksperymentalne procedury

Połączenie

Moduł zasilany jest bezpośrednio z Arduino , więc nie potrzebujemy zewnętrznego zasilania. Aby podłączyć enkoder do Arduino , potrzebujemy trzech wejść cyfrowych, dwóch do wykrywania enkodera i dodatkowego, jeśli chcemy nagrywać naciśnięcie dźwigni (SW)

Piny są połączone zgodnie z tabelą:

Moduł pinów

Przypnij przez Arduino UNO

CLK

D2

DT

D3

południowy zachód

D4

+

5V

GND

GND

Arduino 5 i 6 Arduino idą do anod (+) odpowiednich diod LED, a ich katody do wspólnej masy, która trafi do portu GND Arduino . Pamiętaj, że wszystkie masy muszą być zjednoczone.

Konfiguracja bez rezystorów szeregowych wyglądałaby tak:

Kod

Otwórz nowy szkic i skopiuj następujący kod:

const int przerwanieA = 0; // Przerwij 0

const int przerwanieB = 1; // Przerwanie 1

int CLK = 2; // PIN2

int DAT = 3; // PIN3

int BUTTON = 4; // PIN4

int LED1 = 5; // PIN5

int LED2 = 6; // PIN6

int COUNT = 0;

void setup ()

{

attachInterrupt (przerwanieA, RoteStateChanged, FALLING);

// attachInterrupt (przerwanieB, buttonState, FALLING);

pinMode (CLK, INPUT);

digitalWrite (2, WYSOKI); // Pull High Restance

pinMode (DAT, INPUT);

digitalWrite (3, WYSOKI); // Pull High Restance

pinMode (PRZYCISK, WEJŚCIE);

digitalWrite (4, WYSOKI); // Pull High Restance

pinMode (LED1, OUTPUT);

pinMode (LED2, OUTPUT);

Serial.begin (9600);

}

void loop ()

{

if (! (digitalRead (BUTTON)))

{

LICZBA = 0;

Serial.println ("STOP COUNT = 0");

digitalWrite (LED1, LOW);

digitalWrite (LED2, LOW);

opóźnienie (2000);

}

Serial.println (COUNT);

}

// -------------------------------------------

void RoteStateChanged () // Gdy CLK FALLING READ DAT

{

if (digitalRead (DAT)) // Gdy DAT = HIGH IS FORWARD

{

COUNT ++;

digitalWrite (LED1, HIGH);

digitalWrite (LED2, LOW);

opóźnienie (20);

}

else // When DAT = LOW IS BackRote

{

LICZYĆ--;

digitalWrite (LED2, HIGH);

digitalWrite (LED1, LOW);

opóźnienie (20);

}

}

Możesz zobaczyć, jak zmienia się poziom diod LED podczas obracania dźwigni.