Hi,
ich habe ein kleines Problem, dass ich jetzt mit meinem neuen kleinen
Oszi entlich entlarven konnte. (DSO138 von BG - nettes kleines Spielzeug
und für viele sicher ausreichend :P )
Aber zum eigentlichen Problem.
Für ein Infrarot Sender & Empfänger möchte ich mein eigenes IR Signal
"bauen".
Damit der Empfänger das Signal wahrnimmt ist es 38kHz codiert. Die Daten
werden dann einfach duch die Puls-/Pausenlängen übertragen. Dazu brauche
ich Pulslängen im Bereich ~300-500µS.
Testweise habe ich es mal mit 1mS Pulslänge probiert.
hier der Code :
1 | void loop() {
|
2 | tone(3, 38000);
|
3 | delayMicroseconds(1000);
|
4 | noTone(3);
|
5 | delayMicroseconds(1000);
|
6 | }
|
Da kommt nun leider das raus was ihr auf dem Bild "38kHz Puls 500Hz
delaymicroseconds" seht. Die Pause passt, der Puls ist aber etwa 2,3ms
lang..
Selber Code mit
liefert ein besseres Ergebnis, aber so richtig passt es immernoch
nicht, siehe "38kHz Puls 500Hz delay"
Ein mit digitalWrite und delayMicroseconds erzeugtes 500Hz
Rechtecksignal passt perfekt.
Es scheint also, als würde tone() nicht mit delayMicroseconds() zusammen
funktionieren. Kann das sein??
Hätte da einer ne Idee, wie man das beheben könnte? :)