Hallo erst Mal.
Hab mir jetzt den Mega 2560 Rev3 besorgt im Set mit allem möglichen um da Mal einzusteigen und habe mir gleich mal FreeRTOS angeschaut, weil ich eben gerne Aufgaben voneinander unabhängig ausführe.
Erfahrungen habe ich mit dem Basic-Tiger von Wilke (da hab ich früher einiges mit gemacht) und Pascal, Delphi, PHP, Javascript ... C++ erscheint mir nicht zu kompliziert. Sicher muss ich mich da auch erst dran gewöhnen, aber wird schon. Aber ich brauche sicher noch manchmal genauere Informationen, weil mir noch nicht alles so geläufig ist.
Als Aufgabe habe ich hier eine IR-Remote von Logitech für eine PTZ-Kamera, die ich durch einen Arduino ersetzen will, den ich über RS485 steuern möchte.
Das mit dem RS485 ist soweit klar.
Aber leider benutzt Logitech ein selbst gestricktes IR-protokoll, welches ich so rausgeklingelt habe.
Danach habe ich dann das hier gefunden, was als NEC-Protokoll beschrieben wird.
Aber bei längerem Tastendruck weichen sie (Logitech) von dieser Vorgabe ab und wiederholen das ganze Signal anstelle der im Protokoll sonst üblichen "wiederhole das"-Pulsfolge.
Ich habe mir verschiedene IR-Bibliotheken angeschaut. Viele seit Jahren nicht gepflegt und praktisch keine Dokumentation. Außerdem auch für meinen Zweck zu fett.
Also würde ich mir gerne hier selber jetzt die gewünschten Pulsfolgen basteln. Ist ja auch ne gute Übung.
Träger ist 38kHz. Die Pulse und Pausen sind 560µs(kürzester Puls und kürzeste Pause) bis 39ms(Pause zwischen zwei Pulsfolgen)
Es ist kein Problem für mich die Adressen und Befehle zu berechnen, aber ...
Jetzt die Frage:
Wie erzeugt man sinnvoll ein vom Timing genaues IR-Signal, wenn man genau weiß wie das Signal nachher aussehen soll?
Ich habe jetzt ne Weile rumgesucht und habe den Vorschlag gelesen ( Foren-Beitrag von 2012) man könne einfach auf einem Ausgang einen tone(PIN,38000) dauerhaft absetzen und auf einem zweiten Ausgang das gewünschte Muster durch ein- und ausschalten der IR-LED (die sitzt mit Widerstand in Reihe zwischen den beiden Ausgängen) erzeugen. Die Zeiten mit delayMicroseconds() dazuwischen steuern.
Ist das der beste Weg?
Danke für Input