- Erforderliches Material
- Schaltplan
- Joystick-Modul
- Code und Erklärung
- Steuern von LEDs mit Joystick mit Arduino
Das erste, was uns in den Sinn kommt, wenn wir das Wort Joystick hören, ist der Gamecontroller. Ja, es ist genau das gleiche und kann für Spielzwecke verwendet werden. Abgesehen von Spielen hat es viele andere Anwendungen in der Heimwerkerelektronik. Dieser Joystick ist nichts anderes als eine Kombination von zwei Potentiometern für die X- bzw. Y-Ebene. Es liest die Spannung durch das Potentiometer und gibt dem Arduino einen Analogwert. Der Analogwert ändert sich, wenn wir die Joystickwelle (die einfach der Potentiometerzeiger ist) bewegen.
In dieser Schaltung verbinden wir den Joystick mit Arduino, indem wir einfach vier LEDs gemäß der Bewegung des Joysticks steuern. Wir haben 4 LEDs so platziert, dass sie die Richtung der Bewegung der Joystickwelle darstellen. Dieser Joystick verfügt auch über einen Druckknopf, der für verschiedene andere Zwecke verwendet werden kann oder im Leerlauf gelassen werden kann. Eine einzelne LED ist ebenfalls am Schalter des Joysticks angebracht, da die Joystick-Taste diese einzelne LED gedrückt hat.
Erforderliches Material
- Arduino UNO
- Joystick-Modul
- LEDs-5
- Widerstand: 100 Ohm-3
- Kabel anschließen
- Steckbrett
Schaltplan
Joystick-Modul
Joysticks sind in verschiedenen Formen und Größen erhältlich. Ein typisches Joystick-Modul ist in der folgenden Abbildung dargestellt. Dieses Joystick-Modul bietet normalerweise analoge Ausgänge, und die von diesem Modul bereitgestellten Ausgangsspannungen ändern sich ständig entsprechend der Richtung, in die wir es bewegen. Und wir können die Bewegungsrichtung ermitteln, indem wir diese Spannungsänderungen mit einem Mikrocontroller interpretieren. Zuvor haben wir Joystick mit AVR und Raspberry Pi verbunden.
Wie Sie sehen können, hat dieses Joystick-Modul zwei Achsen. Sie sind X-Achse und Y-Achse. Jede Achse von JOYSTICK ist an einem Potentiometer oder Topf montiert. Die Mittelpunkte dieser Töpfe werden als Rx und Ry ausgetrieben. Rx und Ry sind also variable Punkte für diese Töpfe. Wenn sich der Joystick im Standby-Modus befindet, fungieren Rx und Ry als Spannungsteiler.
Wenn der Joystick entlang der horizontalen Achse bewegt wird, ändert sich die Spannung am Rx-Pin. In ähnlicher Weise ändert sich die Spannung am Ry-Pin, wenn es entlang der vertikalen Achse bewegt wird. Also wir haben vier auf zwei ADC - Ausgänge Richtungen Joystick. Wenn der Stick bewegt wird, geht die Spannung an jedem Pin je nach Richtung hoch oder niedrig.
Hier verbinden wir dieses Joystick-Modul mit dem Arduino UNO, das über einen eingebauten ADC-Mechanismus (Analog-Digital-Wandler) verfügt, wie im Video am Ende gezeigt. Weitere Informationen zur Verwendung des ADC von Arduino finden Sie hier.
Code und Erklärung
Der vollständige Arduino-Code wird am Ende erwähnt.
Im folgenden Code haben wir die X- und Y-Achse des Joystick-Moduls für den analogen Pin A0 bzw. A1 definiert.
#define joyX A0 #define joyY A1
Im folgenden Code initialisieren wir nun PIN 2 von Arduino für den Schalter (Druckknopf) des Joystick-Moduls, und der Wert von buttonstate und buttonstate1 wird zu Beginn 0 sein.
int button = 2; int buttonState = 0; int buttonState1 = 0;
Im folgenden Code stellen wir die Baudrate auf 9600 ein und definieren Pin 7 als Ausgangs-Pin und Button-Pin als Eingangs-Pin. Zu Beginn bleibt der Tastenstift hoch, bis der Schalter drückt.
void setup () {pinMode (7, OUTPUT); pinMode (Taste, INPUT); digitalWrite (Taste, HIGH); Serial.begin (9600); }}
Hier in diesem Code lesen wir die Werte vom analogen Pin A0 und A1 und drucken seriell.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
Die Bedingungen für das Ein- und Ausschalten der LED gemäß der Bewegung der Joystick- Welle sind im folgenden Code definiert. Hier nehmen wir nur analoge Spannungswerte an Pin A0 und A1 von Arduino. Diese analogen Werte ändern sich, wenn wir den Joystick bewegen, und die LED leuchtet entsprechend der Bewegung des Joysticks.
Diese Bedingung gilt für die Bewegung der Joystick-Welle in Richtung der Y-Achse
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
Diese Bedingung gilt für die Bewegung der Joystickwelle in Richtung der Achse -X
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
Diese Bedingung gilt für die Bewegung der Joystickwelle in Richtung der + X-Achse
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
Diese Bedingung gilt für die Bewegung der Joystickwelle in Richtung der + Y-Achse
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
Wenn wir die Joystickwelle diagonal bewegen, kommt eine Position, wenn der Analogwert von X und Y 1023 bzw. 1023 beträgt. Sowohl die LED von Pin 9 als auch die von Pin 8 leuchten. Weil es den Zustand der LED erfüllt. Um diese Nichtübereinstimmung zu beseitigen, haben wir eine Bedingung angegeben, dass, wenn der Wert von (X, Y) (1023, 1023) ist, beide LEDs im AUS-Zustand bleiben
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }}
Die folgende Bedingung wird verwendet, um die an den Drucktastenschalter angeschlossene LED zu betreiben. Wenn wir den Joystick-Schalter drücken, leuchtet die LED auf und rastet ein, bis die Taste losgelassen wird. Es ist optional, den Druckknopfschalter am Joystick-Modul zu verwenden.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Steuern von LEDs mit Joystick mit Arduino
Nachdem wir den Code auf das Arduino hochgeladen und die Komponenten gemäß Schaltplan angeschlossen haben, können wir die LEDs jetzt mit dem Joystick steuern. Wir können die vier LEDs gemäß der Joystick-Wellenbewegung in jede Richtung einschalten. Der Joystick verfügt über zwei Potentiometer, eines für die Bewegung der X-Achse und eines für die Bewegung der Y-Achse. Jedes Potentiometer erhält 5 V vom Arduino. Wenn wir also den Joystick bewegen, ändert sich auch der Spannungswert und der Analogwert an den Analogstiften A0 und A1.
Vom Arduino aus lesen wir also den Analogwert für die X- und Y-Achse und schalten die LEDs gemäß der Achsenbewegung des Joysticks ein. Ein Druckknopfschalter am Joystick-Modul wird verwendet, um die einzelne LED in der Schaltung zu steuern, wie im folgenden Video gezeigt.