Für das Projekt LEDs mit einem Joystick ein- und auszuschalten, eignet sich die Hardware einer Ampelschaltung, die auf einem Breadboard mit einem Arduino Nano realisiert worden ist.

Hier ein Programm, das es ermöglicht, die LEDs an den Pins 2, 3, 4 und 9 mit dem Joystick ein- und auszuschalten. Der zusätzlich im Joystick eingebaute Schalter wird dabei nicht berücksicht. Er wird durch Niederdrücken des Sticks betätigt. Damit könnte eine weitere LED in Betrieb genommen werden. Es sollte nicht schwer sein, den „Switch“ an den Nano anzuschließen und das Programm passend zu erweitern.
int links = 3;
int rechts = 2;
int oben = 4;
int unten = 9;
int SensorWert = 0;
void setup() {
}
void loop() {
SensorWert = analogRead(A0); //VRx >> X-Achse
if (SensorWert > 1010)
{
analogWrite(oben, 150);
}
if (SensorWert < 1010)
{
analogWrite(oben, 0);
}
if (SensorWert < 20 )
{
analogWrite(unten, 150);
}
if (SensorWert > 20)
{
analogWrite(unten, 0);
}
SensorWert = analogRead(1); // VRy >> Y-Achse
if (SensorWert > 1010)
{
analogWrite(rechts, 150);
}
if (SensorWert < 1010)
{
analogWrite(rechts, 0);
}
if (SensorWert > 20)
{
analogWrite(links, 0);
}
if (SensorWert < 20)
{
analogWrite(links, 150);
}
}
Die im Programm verwendeten Sensorwerte keiner oder größer „20“ bzw. „1010“ sind an den möglichen Hebelstellungen orientiert: Ausgangsposition eine „20“, ausgelenkt eine „1010“. An den Pins „A0“ und „A1″werden die Werte ermittelt. Jeder ist vom Programm auf vier Werte geeicht: <20 (an), >20 (aus), <1010 (an), >1010 (aus). Das reicht also, um zwei LEDs ein- und auszuschalten. Über zwei Pins können demnach vier LEDs ein- und ausgeschaltet werden. Das sollte sich beim Ausprobieren auch zeigen.
Wer an den Werten interessiert ist, die sich bei den Hebelstellungen des Joysticks ergeben, der möge den seriellen Monitor der Arduino IDE und folgendes Programm verwenden:
int SensorWert = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
/*Werte an A0*/
SensorWert = analogRead(A0);
Serial.print("X:"); //Wert im Monitor ausgeben
Serial.println(SensorWert, DEC); //Dezimalzahlen in eigenen Zeilen
delay(2000); //Zeit zwischen den Ausgaben
/*Werte an A1*/
SensorWert = analogRead(1);
Serial.print("Y:");
Serial.println(SensorWert, DEC);
delay(2000);
}
Den verwendeten Joystick gibt es hier zu kaufen.