Hi,
danke für die Antwort. Zu deinem Hinweis mit dem Interrupt: Ich nutze den Timer um einen IR-Sensor zu dekodieren. Meine Vorgehensweise habe ich mir aus verschiedenen Quellen zusammengeholt.
Beispiel Start-Bit nach NEC:
9000µs HIGH, 4500µs LOW
Anfangs hatte ich etwas in der Art wie:
Das hat zur Erkennung des Start-Bits soweit funktioniert. Um dann aber die weiteren bits auszulesen scheint millis nicht akkurat genug zu sein. Wie könnte da eine saubere Lösung aussehen?Code:unsigned long startTime, highPulsTime, lowPulsTime; void waitForStartSequence() { startTime = millis(); while(IsIrHigh); // call macro which checks if ir is high highPulsTime = millis(); while(IsIrLow); lowPulsTime = millis(); lowPulsTime -= highPulsTime; highPulsTime -= time; if(highPulsTime >= THE_VALUE_FOR_9600us IsAlmostEqual(lowPulsTime , THE_VALUE_FOR_4500us, TOLERANCE)) Serial.println("X"); }







Zitieren

Lesezeichen