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
- Lautstärke ändern und Programme bei Fernsehern wechseln
- Temperatur bei Heizkörperthermostaten ändern
- Garagentore öffnen und schließen
- Steckdosen ein- und ausschalten
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 -> Bibliothek einbinden -> Bibliotheken 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.