LEDs mit Fern­be­die­nung schalten


// 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: 22. Jul 2023 @ 11:04