Fernbedienung

Inhalt

Für dieses Projekt benötigst du

Infrarotes Licht und Fernbedienungen

Infrarot-Fernbedienungen senden ein für uns unsichtbares Licht „durch die Luft“. Der Empfänger nimmt die Lichtsignale auf und wandelt sie in einen Zahlencode um. Dieser Zahlencode kann viele Geräte steuern.

Beispiele für die Verwendung von Infrarot-Fernbedienungen

Infrarotempfänger und Fernbedienung

Der Schaltplan für den Infrarot-Empfänger

Pinbelegung des Empfängers VS1838B

Auswertung der Zahlencodes des Infrarot-Empfängers VS1838B

Das infrarote Licht wird vom Empfänger erkannt. Der Empfänger enthält eine Fotodiode, das aufgefangene Licht wird in einen Zahlencode umgewandelt.

Dieser Zahlencode wird abgefragt und kann dann anschließend eine Aktion auslösen.

Das Programm

Bibliothek IRremote installieren

Für die Programmierung wird die Bibliothek IRremote verwendet.Sie muss über den Bibliotheksverwalter installiert werden:

Sketch -> Biblio­thek ein­bin­den -> Biblio­the­ken verwalten

Tastencodes abfragen und im Seriellen Monitor anzeigen

Wird eine Taste auf der Fernbedienung gedrückt, zeigt der Seriellen Monitor den Tastencode an.

Vorher musst du den Seriellen Monitor starten:
Entweder über das Menü …

… oder über das Icon in der oberen Leiste:

Ausgabe im Seriellen Monitor

Das Programm für die Abfrage der Tastencodes

// RFID-Bibiothek hinzufügen

#include „MFRC522.h“

// Anschlüsse definieren

#define SDA 10

#define RST 9

// RFID-Empfänger benennen, Pins zuordnen

MFRC522 mfrc522(SDA, RST);

void setup()

{

  Serial.begin(9600);

  SPI.begin();

  // Initialisierung des RFID-Empfängers

  mfrc522.PCD_Init();

}

void loop()

{

  String WertDEZ;

  // Wenn keine Karte in Reichweite ist ..

  if (!mfrc522.PICC_IsNewCardPresent())

  {

    // .. wird die Abfrage wiederholt.

    return;

  }

  // Wenn kein RFID-Sender ausgewählt wurde ..

  if (!mfrc522.PICC_ReadCardSerial())

  {

    // .. wird die Abfrage wiederholt.

    return;

  }

  Serial.println(„Karte entdeckt!“);

  // Dezimal-Wert in Strings schreiben

  for (byte i = 0; i < mfrc522.uid.size; i++)

  {

    // String zusammenbauen

    WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + “ „;

  }

  // Kennung dezimal anzeigen

  Serial.println(„Dezimalwert: „ + WertDEZ);

  // kurze Pause, damit nur ein Wert gelesen wird

  delay(1000);

}

LED mit der Fernbedienung steuern

Die Schaltung wird mit einer LED an Pin 7 erweitert.
Die LED wird eingeschaltet, wenn die Taste 1 der Fernbedienung gedrückt wird, Taste 2 schaltet die LED wieder aus.

Der Schaltplan

Das Programm im Film

Der Programmcode

// RFID-Bibiothek hinzufügen

#include „MFRC522.h“

// Anschlüsse definieren

#define SDA 10

#define RST 9

// LEDs

#define grueneLED 6

#define gelbeLED 7

// Zustand der LEDs false = beim Start ausgeschaltet

bool StatusgelbeLED = false;

bool StatusgrueneLED = false;

// RFID-Empfänger benennen, Pins zuordnen

MFRC522 mfrc522(SDA, RST);

void setup()

{

  Serial.begin(9600);

  SPI.begin();

  // Initialisierung des RFID-Empfängers

  mfrc522.PCD_Init();

  pinMode(gelbeLED, OUTPUT);

  pinMode(grueneLED, OUTPUT);

}

void loop()

{

  String WertDEZ;

  // Wenn keine Karte in Reichweite ist ..

  if (!mfrc522.PICC_IsNewCardPresent())

  {

    // .. wird die Abfrage wiederholt.

    return;

  }

  // Wenn kein RFID-Sender ausgewählt wurde ..

  if (!mfrc522.PICC_ReadCardSerial())

  {

    // .. wird die Abfrage wiederholt.

    return;

  }

  Serial.println(„Karte entdeckt!“);

  // Dezimal-Wert in Strings schreiben

  for (byte i = 0; i < mfrc522.uid.size; i++)

  {

    WertDEZ = WertDEZ + String(mfrc522.uid.uidByte[i], DEC) + “ „;

  }

  // trim() -> Leerzeichen am Ende des Strings entfernen

  WertDEZ.trim();

  // Kennung dezimal anzeigen

  Serial.println(„Dezimalwert: „ + WertDEZ);

  // gelbe LED schalten

  if (WertDEZ == „67 217 130 21“)

  {

    // Status ändern an/aus

    StatusgelbeLED = !StatusgelbeLED;

    digitalWrite(gelbeLED, StatusgelbeLED);

  }

  // grüne LED schalten

  if (WertDEZ == „3 208 23 23“)

  {

    // Status ändern

    StatusgrueneLED = !StatusgrueneLED;

    digitalWrite(grueneLED, StatusgrueneLED);

  }

  // Wartezeit verhindert, dass die Karte nur einmal erkannt wird

  delay(1000);

}

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft bis zu 10 % Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 4.000 Artikel sofort verfügbar!
  • Mehr als 10 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE
Benötigst du Unterstützung bei deinem Projekt?

Alle Modelle der hier gezeigten Modelle sind hier zum Download  in einer kompakten Zip Datei verfügbar.