Inhaltsverzeichnis
LED leuchtet, wenn der Taster gedrückt wird
// Array Taster
// Reihenfolge A B C D
byte Taster[] = { 2, 3, 4, 5, 8 };
// analoge Pins Joystick
byte XAchse = A0;
byte YAchse = A1;
// Array für die LEDs
byte LED[5] = { 9, 10, 11, 12 };
void setup()
{
Serial.begin(9600);
// pinMode der 4 Taster festlegen: sizeof = Größe des Arrays
// INPUT_PULLUP -> Eingangspegel auf HIGH setzen
for (int i = 0; i <= sizeof(Taster); i++)
{
// INPUT_PULLUP -> Eingangspegel auf HIGH setzen
pinMode(Taster[i], INPUT_PULLUP);
}
// pinMode der LEDs festlegen
for (int i = 0; i < sizeof(LED); i++)
{
pinMode(LED[i], OUTPUT);
}
}
void loop()
{
// Zustand der Taster der Reihe nach abfragen
for (int i = 0; i < sizeof(Taster); i++)
{
// wenn der jeweilige Taster gedrückt wird
// wird der Zustand der jeweiligen LED true
// -> LED wird eingschaltet
if (digitalRead(Taster[i]) == LOW)
{
digitalWrite(LED[i], HIGH);
Serial.println("Taste: " + String(Taster[i]));
}
// wenn der Taster nicht gedrückt wurde
// -> LED bleibt ausgeschaltet
else digitalWrite(LED[i], LOW);
}
// Bewegung der Y-Achse lesen
int PositionX = analogRead(XAchse);
// Bewegung X-Achse nach links
// Lauflicht nach links,
// for-Schleife läuft rückwärts
if (PositionX > 600)
{
for (int i = 0; i < sizeof(LED); i++)
{
digitalWrite(LED[i], HIGH);
delay(200);
digitalWrite(LED[i], LOW);
}
}
// Bewegung X-Achse nach links
// Lauflicht nach links
if (PositionX < 300)
{
for (int i = sizeof(LED); i >= 0; i--)
{
digitalWrite(LED[i], HIGH);
delay(200);
digitalWrite(LED[i], LOW);
}
}
}
Taster funktioniert als Ein-/Ausschalter der LED
# include "Bounce2.h"
// Array für die LEDs
byte LED[5] = { 9, 10, 11, 12 };
// Taster
int TasterA = 2;
int TasterB = 3;
int TasterC = 4;
int TasterD = 5;
int TasterJoystick = 8;
// analoge Pins Joystick
byte XAchse = A0;
byte YAchse = A1;
// Bibliothek Bounce2
// "Prellverhinderer" für die Tasten starten
Bounce A = Bounce();
Bounce B = Bounce();
Bounce C = Bounce();
Bounce D = Bounce();
Bounce JoystickKnopf = Bounce();
/*
Array für den Zustand der LEDs
false = ausgeschaltet
true = eingeschaltet
*/
bool Status[5] = { false, false, false, false, false };
void setup() {
// pinMode der LEDs festlegen
for (int i = 0; i <= sizeof(LED); i++) {
pinMode(LED[i], OUTPUT);
}
// Vorwiderstand der Taster aktivieren
pinMode(TasterA, INPUT_PULLUP);
pinMode(TasterB, INPUT_PULLUP);
pinMode(TasterC, INPUT_PULLUP);
pinMode(TasterD, INPUT_PULLUP);
pinMode(TasterJoystick, INPUT_PULLUP);
// attach -> Bounce für jede Taste zuordnen
A.attach(TasterA);
B.attach(TasterB);
C.attach(TasterC);
D.attach(TasterD);
JoystickKnopf.attach(TasterJoystick);
}
void loop()
{
// Taster A
if (A.update()) {
if (A.read() == LOW)
{
// LED Pin 3 Status[0]
Status[0] = !Status[0];
digitalWrite(LED[0], Status[0]);
}
digitalWrite(LED[4], LOW);
}
// Taster B
if (B.update()) {
if (B.read() == LOW)
{
// LED Pin 4 Status[1]
Status[1] = !Status[1];
digitalWrite(LED[1], Status[1]);
}
}
// Taster C
if (C.update())
{
if (C.read() == LOW)
{
// LED Pin 5 Status[2]
Status[2] = !Status[2];
digitalWrite(LED[2], Status[2]);
}
}
// Taster D
if (D.update())
{
if (D.read() == LOW)
{
// LED Pin 6 Status[3]
Status[3] = !Status[3];
digitalWrite(LED[3], Status[3]);
}
}
// Taster Joystick
if (JoystickKnopf.update())
{
if (JoystickKnopf.read() == LOW)
{
// alle LEDs einschalten und Status aller LEDs auf true (ein) setzen
for (int i = 0; i <= sizeof(LED); i++)
{
Status[i] = true;
digitalWrite(LED[i], Status[i]);
}
}
}
// Bewegung der Y-Achse lesen
int PositionX = analogRead(XAchse);
// Bewegung X-Achse nach rechts
// Lauflicht nach rechts
if (PositionX < 300)
{
for (int i = 0; i < sizeof(LED); i++)
{
digitalWrite(LED[i], HIGH);
delay(200);
digitalWrite(LED[i], LOW);
}
}
// Bewegung X-Achse nach links
// Lauflicht nach links, for-Schleife läuft rückwärts
if (PositionX > 600)
{
for (int i = sizeof(LED); i >= 0; i--)
{
digitalWrite(LED[i], HIGH);
delay(200);
digitalWrite(LED[i], LOW);
}
}
}
Letzte Aktualisierung: