Projekt I08 - Infrarot-Empfaenger VS1838B
Beginner-Projekte abgeschlossen, Grundlagen der seriellen Kommunikation und switch-case bekannt
Was du brauchst
Miniatur-Infrarot-Empfaengermodul fuer 38 kHz modulierte IR-Signale. Demoduliert das Signal und gibt digitale Impulse aus.
Frequenz: 38 kHz Traeger
Reichweite: bis 18 Meter
Hinweis: In Wokwi heisst der Empfaenger "IR Receiver"
In Wokwi ist eine virtuelle Fernbedienung integriert. Echte Fernbedienungen (TV, DVD, etc.) funktionieren meist mit dem NEC-Protokoll.
Start 32 Bit Daten Ende
βββββββββββ βββββββββββββββββββββββ βββββ
β 9ms+4.5ms β β Adresse + Command β βEndβ
βββββββββββ βββββββββββββββββββββββ βββββ
Bit 0 Bit 1
βββββ βββββ βββββ βββββ
β562β β562β β562β β1687β
βββββ βββββ βββββ βββββ
Burst Pause Burst Pause
Vorteil: Traegerfrequenz filtert Sonnenlicht und Lampen aus
Verbindungen zum Arduino
Arduino Uno VS1838B
βββββββββββββ βββββββββ
β β β βββββ β
β 5V βββββββΌβββββββββΌββ€VCCβ β
β β β βββββ β
β Pin 7 ββββΌβββββββββΌββ€DATβ β
β β β βββββ β
β GND ββββββΌβββββββββΌββ€GNDβ β
β β β βββββ β
βββββββββββββ βββββββββ
Klicke in der Simulation auf die Fernbedienung und druecke die Tasten - die Codes werden sofort gesendet!
// Schritt 1: IRremote-Library einbinden
#include <IRremote.h>
// IR-Empfaenger an Pin 7
#define IR_PIN 7
void setup() {
Serial.begin(9600);
// IR-Empfaenger initialisieren
IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);
Serial.println("Warte auf IR-Signale...");
}
void loop() {
// Wird gleich gefuellt...
}#include <IRremote.h> - Bindet die IR-Bibliothek einIrReceiver.begin() - Startet den EmpfaengerENABLE_LED_FEEDBACK - LED blinkt bei EmpfangDie Library dekodiert automatisch NEC, Sony, RC5, RC6 und viele weitere IR-Protokolle. Du musst nur die empfangenen Codes auswerten!
void loop() {
// Pruefen ob IR-Signal empfangen wurde
if (IrReceiver.decode()) {
// Pruefen ob bekanntes Protokoll
if (IrReceiver.decodedIRData.protocol != UNKNOWN) {
// Tasten-Code ausgeben
Serial.print("Code: 0x");
Serial.println(IrReceiver.decodedIRData.command, HEX);
// Protokoll-Name ausgeben
Serial.print("Protokoll: ");
Serial.println(getProtocolString(IrReceiver.decodedIRData.protocol));
}
// Empfaenger fuer naechstes Signal vorbereiten
IrReceiver.resume();
}
}decode() gibt true zurueck wenn ein Signal empfangen wurde. decodedIRData.command enthaelt den Tasten-Code. resume() bereitet den Empfang des naechsten Signals vor.
// Typische Tasten-Codes (China-Fernbedienung)
void handleKey(uint8_t code) {
switch (code) {
case 0x0C: Serial.println("Taste 1"); break;
case 0x18: Serial.println("Taste 2"); break;
case 0x5E: Serial.println("Taste 3"); break;
case 0x44: Serial.println("PREV"); break;
case 0x40: Serial.println("NEXT"); break;
case 0x43: Serial.println("PLAY"); break;
case 0x07: Serial.println("VOL-"); break;
case 0x15: Serial.println("VOL+"); break;
default: Serial.println("Unbekannt");
}
}Jeder case vergleicht mit einem Hex-Code. Bei Treffer wird die Aktion ausgefuehrt. break verhindert Durchfallen zum naechsten case.
Starte das Programm und druecke jede Taste. Notiere die Hex-Codes im Serial Monitor und passe die switch-Werte an!
Simulation in Wokwi
Erstelle ein neues Projekt mit Arduino Uno und IR-Receiver:
Probiere diese Aufgaben aus
3 LEDs mit den Tasten 1, 2 und 3 ein- und ausschalten (Toggle)
LED-Helligkeit mit VOL+ erhoehen und VOL- verringern
RGB-LED mit Zifferntasten 1-6 in verschiedenen Farben steuern
Servo mit PREV/NEXT Tasten links/rechts bewegen
Du beherrschst jetzt die IR-Fernsteuerung
Externe Bibliothek genutzt
38 kHz IR-Signale dekodiert
Tasten Aktionen zugeordnet
Du hast alle 8 Intermediate-Projekte abgeschlossen! Bereit fuer die Advanced-Projekte?