Inhaltsverzeichnis
LED leuchtet, wenn der Taster gedrückt wird
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | // 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | #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: