// benötigte Bibliothek einbinden
#include "IRremote.h"
// 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: