Positionsschalter Siemens


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


LED-Blinker mit Fernbedienung
(und Arduino)


Im folgenden Beispiel kommen neben Arduino eine Fernbedienung und ein IR-Empfänger zum Einsatz. Die Signale, die Fernbedienung versendet, werden von einem IR-Empfänger empfangen und an Arduino weitergereicht. Im Programm werden diese Signale „dechiffriert“ und ausgewertet. Es werden auf der Fernbedienung drei Tasten verwendet: „1“, „2“ und „3“. Sobald eine Taste betätigt wird, leuchtet die an Arduino angeschlossene Leuchtdiode auf. Bei Taste „1“ blinkt sie nur einmal, bei Taste „2“ zweimal und schließlich bei Taste „3“ dreimal.

Die passende Schaltung ist sehr simpel und sieht wie folgt aus:

Schaltplan

Schaltplan

Bei dem Empfänger handelt es sich um ein fertiges Modul VMA317. Das Herzstück des Moduls bildet der IR-Empfänger 1838. Er arbeitet im Frequenzbereich von 37,9 kHz und kann an eine Spannungsversorgung von 3 bis 5 V angeschlossen werden. Das empfangene Signal wird an Arduino als eine digitale Signalabfolge über nur eine Leitung weitergereicht. Das Modul hat drei Anschlüsse:
1 – (S) – Signal
2 – (+) – 3 – 5 V
3 – (-) - GND

Empfänger VMA317 mit 1838

Empfänger-Modul VMA317 mit 1838

Als Sender wird eine Mini-Fernbedienung, die in der oder ähnlicher Form überall erhältlich ist, verwendet. Sie ist ca. 4 cm breit, hat eine Länge von ca. 8,5 cm und ist in nahezu jedem Einsteiger-Kit für Arduino oder Raspberry Pi mit von der Partie. Für den Versuch hätte man auch eine andere, eine aus der Reihe der „Echten“, verwenden können.

IR-Fernbedienung

IR-Fernbedienung

Die fertig aufgebaute Schaltung für diesen Versuch sieht wie folgt aus:

Testschaltung

Testschaltung

Das Programm

In dem Programm wird die speziell für solche Aufgaben erstellte Bibliothek „IRremote“ verwendet. Genaue Informationen zu der Bibliothek findet man im Internet unter https://github.com/z3t0/Arduino-IRremote. Vor der Inbetriebnahme der kleinen Schaltung muss diese Bibliothek installiert sein. Nach dem Programmstart wartet der IR-Empfänger auf Signale von der Fernbedienung. Sobald der Sensor etwas empfängt, wird das Lichtsignal in eine Datenfolge umgewandelt und zu Arduino über eine Leitung, die an Pin 13 angeschlossen ist, weitergeleitet. Die „IRremote“ Software wandelt die ankommenden Daten in eine Zahl, die wir dann im Programm auswerten können, um. In dem Monitor-Fenster werden alle ankommenden Signale aufgezeichnet. Es wird jeweils eine dezimale und die entsprechende hexadezimale Zahl ausgegeben. Das Blinken der Leuchtdiode ist davon abhängig, ob die Taste "1", "2" oder "3" betätigt wurde. In dem Fall wird zusätzlich auf dem Monitor per Text informiert, welche der drei Tasten erkannt wurde. Abhängig von diesen drei Tasten beginnt die Leuchtdiode zu blinken:
Taste 1 = 1 x blinken
Taste 2 = 2 x blinken
Taste 3 = 3 x blinken
Man kann das Programm natürlich weiter erweitern und mehreren oder allen Tasten der Fernbedienung eine Funktion zuordnen.
Nachdem die Blink-Schleife abgelaufen ist, warte das Programm auf weitere Signale von der Fernbedienung.

// --------------------------------------------------------
// LED-Blinker mit Fernbedienung (und Arduino)
// IDE 1.8.12
// Bibliothek IRremote Version 2.6.1
// IR-Empfänger VMA317 (Modul) mit 1838
// --------------------------------------------------------

#include <IRremote.h>

int Recv_Pin = 13;
int Led_Ausgang = 40;
int Blink_Zaehler = 0;

IRrecv irrecv(Recv_Pin);
decode_results Ergebnis;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();                          // Empfang start
  pinMode(Led_Ausgang, OUTPUT);                 // Diode Ausgang
}

// Hauptprogramm
void loop() {
  
  if (irrecv.decode(&Ergebnis)) {               // Etwas empfangen?  
    Serial.println(Ergebnis.value); 
    Serial.println(Ergebnis.value, HEX);

    if (Ergebnis.value == 0xFF6897) {
      Blink_Zaehler = 1;
      Serial.println("Taste 1 = 1x blinken");
    }
    if (Ergebnis.value == 0xFF9867) {
      Blink_Zaehler = 2;
      Serial.println("Taste 2 = 2x blinken");
    }
    if (Ergebnis.value == 0xFFB04F) {
      Blink_Zaehler = 3;
      Serial.println("Taste 3 = 3x blinken");
    }
    for (int i=0; i < Blink_Zaehler; ++i) {      // Blink-Sequenz
      digitalWrite(Led_Ausgang, HIGH);
      delay (300);
      digitalWrite(Led_Ausgang, LOW);
      delay (300);
    }
    irrecv.resume();                             // Zurücksetzen
    Blink_Zaehler = 0;
  }
}
// ----------------------------------------------------------
        

Ausgabe auf dem Monitor

Monitorausgabe

Monitorausgabe

Kurzvideo

Kurzvideo: LED-Blinker mit IR-Fernbedienung und Arduino


Infrarot


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz