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 | // Bibliothek Bounce einbinden #include “Bounce2.h” // Bounce starten // Namen des Objekts Bounce (TasterGedrueckt) festlegen Bounce TasterGedrueckt = Bounce(); // Pin für den Auslöser des Interrupts int TASTER = 2; // Array mit 5 Elementen und den zugehörigen Pins // wenn LEDs hinzugefügt werden -> Größe des Arrays in […] anpassen int LED[5] = { 3, 4, 5, 6, 7 }; // Anzahl der LEDs feststellen int LEDMax = sizeof(LED) / sizeof(LED[0]); // Leuchtdauer der LEDs int Leuchtdauer = 100; // Variable im Flash-Speicher ablegen volatile bool LEDStatus = true; void setup() { // pinMode Taster INPUT_PULLUP -> Vorwiderstand einschalten pinMode(TASTER, INPUT_PULLUP); // pinMode LEDs for (int i = 0; i < LEDMax; i++) { pinMode(LED[i], OUTPUT); } // Funktion Schalten() dem Interrupt-Pin zuordnen attachInterrupt(digitalPinToInterrupt(TASTER), Schalten, FALLING); TasterGedrueckt.attach(TASTER, INPUT_PULLUP); } void loop() { // Taster abfragen /* solange der Status true ist, wird die while-Schleife ausgeführt, ein weiterer Druck auf eine Taste der Fernbedienung löst den Interrupt aus -> Status wird zu false, die while-Schleife wird nicht erneut ausgeführt allerdings wird der aktuelle Durchlauf erst beendet */ if (TasterGedrueckt.update()) { // Taster wurde gedrückt, das Signal ist gefallen if (TasterGedrueckt.fell()) { LEDStatus = true; /* solange der Status true ist, wird die while-Schleife ausgeführt, ein weiterer Druck auf eine Taste der Fernbedienung löst den Interrupt aus -> Status wird zu false, die while-Schleife wird nicht erneut ausgeführt allerdings wird der aktuelle Durchlauf erst beendet */ while (LEDStatus) LauflichtHinUndHer(); } } } // der Interrupt durch den Taster setzt den LEDStatus auf false void Schalten() { LEDStatus = false; } void LauflichtHin() { for (int i = 0; i < LEDMax; i++) { digitalWrite(LED[i], HIGH); delay(Leuchtdauer); digitalWrite(LED[i], LOW); } } void LauflichtHinUndHer() { for (int i = 0; i < LEDMax; i++) { digitalWrite(LED[i], HIGH); delay(Leuchtdauer); digitalWrite(LED[i], LOW); } // und wieder zurück for (int i = LEDMax - 1; i >= 0; i–) { digitalWrite(LED[i], HIGH); delay(Leuchtdauer); digitalWrite(LED[i], LOW); } } |
Letzte Aktualisierung: