// Pin für die IR-LED definieren const int irSensorPin = 7; // Pin für den IR-Sensor (TSOP4838) void setup() { Serial.begin(9600); // Serielle Kommunikation initialisieren pinMode(irSensorPin, INPUT); // Setze den Pin für den IR-Sensor als Eingang enableIRModulation(); // Starte die 38-kHz-Modulation } void loop() { // Überprüfen, ob der IR-Sensor das modulierte Signal empfängt if (digitalRead(irSensorPin) == LOW) { // Der TSOP4838 gibt LOW aus, wenn er ein gültiges Signal empfängt Serial.println("IR-Signal empfangen!"); } else { Serial.println("Kein IR-Signal."); } delay(500); // Warte 500 ms, bevor erneut geprüft wird } // Funktion, um 38-kHz-Modulation zu erzeugen (über den Timer 2) void enableIRModulation() { pinMode(3, OUTPUT); // Pin 3 als Ausgang festlegen // Timer2 Konfiguration für 38 kHz PWM auf Pin 3 TCCR2A = _BV(COM2B1) | _BV(WGM21); // Setze Pin 3 als PWM-Ausgang, CTC-Modus TCCR2B = _BV(CS20); // Keine Prescaler (Vorteiler), Timer läuft mit voller Geschwindigkeit OCR2A = 209; // Setze die Timer-Frequenz für 38 kHz OCR2B = 104; // Setze die PWM-Duty-Cycle auf 50% } // Funktion, um die Modulation zu stoppen (falls nötig) void disableIRModulation() { TCCR2A = 0; // Deaktiviere Timer2 TCCR2B = 0; }