Arduino w połączeniu z przełącznikiem obrotowym - enkoderem MOD-16
Przykład demonstruje podstawową obsługę modułu enkodera z mikrokontrolerem Arduino.
W przykładzie wykorzystano następujące elementy:
- Arduino Uno
-
Przełącznik obrotowy, impulsator, enkoder z przetwornikiem - MOD-16
- Diody LED
- Rezystory
- Płytka stykowa oraz przewody
Podłączenie
Moduł jest zasilany bezpośrednio z Arduino, więc nie potrzebujemy zewnętrznego źródła energii. Piny podpinamy według poniższej tabeli:
Pin modułu | Pin Arduino |
---|---|
+ V | 5 V |
GND | GND |
S1A | 5 V |
S1B | 10 |
S2 | 7 |
S3 | 6 |
Dodatkowo płytka zawiera diody LED podpięte przez rezystory 220 Ω pomiędzy pinem 11 oraz 12, a masą. Cały układ jest widoczny na poniższym schemacie.
Schemat podłączenia modułu i Arduino Uno.
Obsługa
Wyjścia S1A i S1B są to złącza przycisku umieszczonego w pokrętle. Po jego naciśnięciu następuje ich zwarcie. Natomiast wyjścia S2 i S3 wykrywają kierunek ruchu pokrętła, odpowiednio w prawo i w lewo. Gdy ruch zostanie wykryty na wyjściu danego pinu pojawia się stan wysoki.
W przykładzie został wykorzystany następujący kod programu:
int led1 = 11; //dioda podpięta do pinu 11 int led2 = 12; //dioda podpięta do pinu 12 int brightness = 0; //jasność diody led1 int fadeAmount = 5; //zmiana jasności przy przekręceniu pokrętłą dla led1 void setup(){ pinMode(6,INPUT); //ustawienie pinów 6, 7 i 10 jako wejścia pinMode(7,INPUT); pinMode(10,INPUT); pinMode(led1, OUTPUT); //piny z diodami jako wyjścia pinMode(led1, OUTPUT); } void loop(){ analogWrite(led1, brightness); //przypisanie wartości brightness do diody led1 if (brightness = 255) brightness = 255 ; if(digitalRead(6) == 1) //jeśli zostanie wykryty obrót popkrętła w prawo lub lewo, wtedy dioda led1 zacznie zwiększać lub zmniejszać swoją jasność {brightness = brightness + fadeAmount;} if(digitalRead(7) == 1) {brightness = brightness - fadeAmount;} if(digitalRead(10) == 1 && digitalRead(led2, HIGH)) //w przypadku naciśnięcia przycisku w pokrętle dioda led2 zmieni swój stan (jeśli się świeci to zgaśnie, jeśli jest zgaszona - zaświeci się) {digitalWrite(led2,LOW)} if(digitalRead(10) == 1 && digitalRead(led2,LOW)) {digitalWrite(led2,HIGH)} }
Naciśnięcie przycisku w pokrętle powoduje zmianę stanu żółtej diody (na przemian będzie się zapalać i gasnąć). Natomiast kręcąc pokrętłem możemy zmieniać jasność czerwonej diody (rozjaśniać ją i wygaszać).