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 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | // benötigte Bibliothek einbinden #include “IRremote.hpp” // Pin, an dem der Infrarot-Empfänger angeschlossen ist int EmpfaengerPin = 11; // Anzahl der LEDs #define AnzahlLED 7 // Pins der LEDs int LED[AnzahlLED] = { 3, 4, 5, 6, 7, 8, 9 }; // beim Start sind alle LEDs ausgeschaltet bool LEDStatus[AnzahlLED] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW }; void setup() { // Infrarot-Empfänger starten IrReceiver.begin(EmpfaengerPin); // pinMode der LEDs definieren for(int i = 0; i < AnzahlLED; i++) { pinMode(LED[i], OUTPUT); } } void loop() { // decode() -> Daten lesen if (IrReceiver.decode()) { // kurzes delay, damit nur ein Tastendruck gelesen wird delay(200); // resume -> nächsten Wert lesen IrReceiver.resume(); /* der Empfänger empfängt zwischendurch Signale, die nicht ausgewertet werden können es sollen dehalb nur die korrekt erkannten Tasten ausgewertet werden die Dezimalwerte der korrekten erkannten Tasten liegen zwischen > 0 und < 95 es wird abgefragt, ob das empfangene Kommando decodedIRData.command zwischen 0 und (&&) 95 liegt */ if (IrReceiver.decodedIRData.command > 0 && IrReceiver.decodedIRData.command < 95) { // Werte abfragen und anzeigen // Tasten 1–7 switch (IrReceiver.decodedIRData.command) { case 22: LEDSchalten(0); break; case 25: LEDSchalten(1); break; case 13: LEDSchalten(2); break; case 12: LEDSchalten(3); break; case 24: LEDSchalten(4); break; case 94: LEDSchalten(5); break; case 8: LEDSchalten(6); break; // * case 66: AlleAn(); break; // # case 74: AlleAus(); break; // Pfeil links case 68: LauflichtLinks(); break; // Pfeil rechts case 67: LauflichtRechts(); break; default: break; } } } } void LEDSchalten(int LEDNummer) { // LEDStatus umkehren LOW -> HIGH, HIGH -> LOW LEDStatus[LEDNummer] = !LEDStatus[LEDNummer]; digitalWrite(LED[LEDNummer], LEDStatus[LEDNummer]); } void LauflichtLinks() { for (int i = 0; i < AnzahlLED; i++) { digitalWrite(LED[i], HIGH); delay(100); digitalWrite(LED[i], LOW); AlleAus(); } } void LauflichtRechts() { for (int i = AnzahlLED; i >= 0; i–) { digitalWrite(LED[i], HIGH); delay(100); digitalWrite(LED[i], LOW); AlleAus(); } } void AlleAus() { // LEDs ausschalten // LEDStatus aller LEDs auf LOW setzen for (int i = 0; i < AnzahlLED; i++) { digitalWrite(LED[i], LOW); LEDStatus[i] = LOW; } } void AlleAn() { // LEDs einschalten // LEDStatus aller LEDs auf HIGH setzen for (int i = 0; i < AnzahlLED; i++) { digitalWrite(LED[i], HIGH); LEDStatus[i] = HIGH; } } |
Letzte Aktualisierung: