- Wymagany materiał
- Schemat obwodu
- Moduł joysticka
- Kod i wyjaśnienie
- Sterowanie diodami LED za pomocą Joysticka z Arduino
Pierwszą rzeczą, która przychodzi nam na myśl, słuchając słowa Joystick, jest kontroler gier. Tak, jest dokładnie taki sam i może być używany do celów gier. Oprócz gier ma wiele innych zastosowań w elektronice DIY. Ten joystick to nic innego jak połączenie dwóch potencjometrów odpowiednio dla płaszczyzny X i Y. Odczytuje napięcie za pomocą potencjometru i podaje wartość analogową do Arduino, a wartość analogowa zmienia się, gdy poruszamy drążkiem joysticka (który jest po prostu wskaźnikiem potencjometru).
W tym obwodzie łączymy Joystick z Arduino, po prostu kontrolując cztery diody LED zgodnie z ruchem joysticka. 4 diody umieściliśmy w taki sposób, aby reprezentowały kierunek ruchu drążka joysticka. Ten joystick ma również przycisk, którego można używać do różnych innych celów lub można go pozostawić w stanie bezczynności. Pojedyncza dioda LED jest również przymocowana do przełącznika joysticka, ponieważ przycisk joysticka naciśnięty ta pojedyncza dioda LED zaświeci się.
Wymagany materiał
- Arduino UNO
- Moduł joysticka
- Diody LED-5
- Rezystor: 100ohm-3
- Przewody łączące
- Płytka prototypowa
Schemat obwodu
Moduł joysticka
Joysticki są dostępne w różnych kształtach i rozmiarach. Poniższy rysunek przedstawia typowy moduł joysticka. Ten moduł joysticka zwykle zapewnia wyjścia analogowe, a napięcia wyjściowe zapewniane przez ten moduł zmieniają się w zależności od kierunku, w którym go przesuwamy. Kierunek ruchu możemy uzyskać, interpretując te zmiany napięcia za pomocą mikrokontrolera. Wcześniej połączyliśmy Joystick z AVR i Raspberry Pi.
Jak widać, ten moduł joysticka ma dwie osie. Są to oś X i oś Y. Każda oś JOYSTICK jest zamontowana na potencjometrze lub potencjometrze. Punkty środkowe tych pul są wypychane jako Rx i Ry. Zatem Rx i Ry są zmiennymi punktami w tych pulach. Gdy joystick jest w trybie gotowości, Rx i Ry działają jako dzielnik napięcia.
Gdy joystick jest przesuwany wzdłuż osi poziomej, zmienia się napięcie na pinie Rx. Podobnie, gdy jest przesuwany wzdłuż osi pionowej, zmienia się napięcie na pinie Ry. Mamy więc cztery kierunki joysticka na dwóch wyjściach ADC. Kiedy drążek jest poruszany, napięcie na każdym pinie rośnie lub maleje w zależności od kierunku.
Tutaj łączymy ten moduł Joysticka z Arduino UNO, który jest wyposażony we wbudowany mechanizm ADC (konwerter analogowo-cyfrowy), jak pokazano na wideo na końcu. Dowiedz się więcej o używaniu ADC Arduino tutaj.
Kod i wyjaśnienie
Na końcu wymieniony jest cały kod Arduino.
W poniższym kodzie zdefiniowaliśmy oś X i Y modułu Joystick odpowiednio dla analogowego pinu A0 i A1.
#define joyX A0 #define joyY A1
Teraz w poniższym kodzie inicjalizujemy PIN 2 Arduino dla przełącznika (przycisku) modułu Joystick, a wartość buttonstate i buttonstate1 będzie wynosić 0 na starcie.
int przycisk = 2; int buttonState = 0; int buttonState1 = 0;
W poniższym kodzie ustawiamy szybkość transmisji na 9600 i zdefiniowaliśmy Pin 7 jako pin wyjściowy i pin przycisku jako Pin wejściowy. Początkowo szpilka przycisku pozostanie wysoka do momentu naciśnięcia przełącznika.
void setup () {pinMode (7, OUTPUT); pinMode (przycisk, INPUT); digitalWrite (przycisk, WYSOKI); Serial.begin (9600); }
Tutaj w tym kodzie odczytujemy wartości z pinu analogowego A0 i A1 i drukujemy szeregowo.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Warunki włączania i wyłączania diody LED zgodnie z ruchem drążka joysticka są zdefiniowane w poniższym kodzie. Tutaj bierzemy tylko analogowe wartości napięcia na pinie A0 i A1 Arduino. Te wartości analogowe będą się zmieniać w miarę poruszania joystickiem, a dioda LED będzie świecić zgodnie z ruchem joysticka.
Ten warunek dotyczy ruchu drążka joysticka w kierunku osi -Y
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, NISKI);}
Ten warunek dotyczy ruchu drążka joysticka w kierunku osi -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, NISKI);}
Ten warunek dotyczy ruchu drążka joysticka w kierunku osi + X.
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, NISKI);}
Ten warunek dotyczy ruchu drążka joysticka w kierunku osi + Y
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, NISKI);}
Kiedy przesuniemy drążek joysticka po przekątnej, nastąpi jedna pozycja, gdy wartość analogowa X i Y będzie wynosić odpowiednio 1023 i 1023, diody LED dla pinów 9 i 8 będą się świecić. Ponieważ spełnia warunek diody LED. Tak więc, aby usunąć to niedopasowanie, podaliśmy warunek, że jeśli wartość (X, Y) wynosi (1023, 1023), to obie diody pozostają wyłączone
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, NISKI); }
Poniższy warunek służy do obsługi diody LED podłączonej do przełącznika przyciskowego. Po naciśnięciu przełącznika joysticka dioda LED zaświeci się i zablokuje, aż przycisk zostanie zwolniony. Opcjonalnie można użyć przełącznika z przyciskiem na module joysticka.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, WYSOKI); } else {digitalWrite (7, NISKI);}
Sterowanie diodami LED za pomocą Joysticka z Arduino
Po wgraniu kodu do Arduino i podłączeniu komponentów zgodnie ze schematem obwodu, możemy teraz sterować diodami LED za pomocą Joysticka. Możemy włączyć cztery diody LED w każdym kierunku zgodnie z ruchem drążka joysticka. Joystick ma w środku dwa potencjometry, jeden do ruchu w osi X, a drugi do ruchu w osi Y. Każdy potencjometr pobiera 5v z Arduino. Więc gdy poruszamy joystickiem, wartość napięcia będzie się zmieniać, a wartość analogowa na pinach analogowych A0 i A1 również się zmieni.
Tak więc z Arduino odczytujemy wartość analogową dla osi X i Y i włączamy diody LED zgodnie z ruchem osi joysticka. Przełącznik wciskany na module joysticka służy do sterowania pojedynczą diodą LED w obwodzie, jak pokazano na poniższym filmie.