Ich versuche, eine LED mit einem leistungsstarken 433-MHz-Sender-Empfänger-Paar zu steuern, wobei der Sender an meinen Arduino Nano angeschlossen ist.
Hier ist der Sender (XLPCF20): http://www.colorapples.com/rf-wireless-transmitter-module-315-or-43392mhz-xlpcf20-p-38493.html
Hier ist der Empfänger (CDR 5 B): http://www.amazon.co.uk/433MHZ-115dbm-Wireless-Receiver-CDR-5-B/dp/B00COD96UG
Ich kann HIGH an einen Datenkanal am Sender senden (er hat 4 Kanäle) und den HIGH-Eingang am selben Kanal am Empfänger empfangen, wodurch eine LED erfolgreich aufleuchtet. Dies ist mein aktueller Test-Sketch:
void setup(){
pinMode(8, OUTPUT);
}
void loop(){
digitalWrite(8, HIGH);
delay(122); //this is the important line
digitalWrite(8, LOW);
delay(100);
}
Dies funktioniert gut, aber wenn ich die Verzögerung von 122 ms an der fallenden Flanke auf 121 ms (oder etwas darunter) ändere, habe ich keine Ausgabe am Empfänger. Die LED leuchtet überhaupt nicht. Es ist für alle Kanäle gleich, genau an dieser Grenze zwischen 121 ms und 122 ms gibt es eine scharfe Änderung (den genauen Wert durch Ausprobieren gefunden). Am Sender/Arduino ist das Ausgangssignal klar, also liegt ein Fehler am Sender oder Empfänger vor. Ich habe in der Vergangenheit andere, viel einfachere/billigere 433-MHz-Sender/Empfänger-Paare ohne solche Probleme verwendet. An der steigenden Flanke (zweiter Verzögerungsanruf, der mit 100 ms) gibt es ein weiteres Problem, wenn ich unter 13 ms absinke. Bei genau 12ms ist die LED instabil, sie blinkt manchmal wie erwartet, aber manchmal leuchtet sie einfach auf. Alles unter 12 ms, die LED ist konstant hoch, kein einziges Blinken.
UPDATE: Wenn ich _delay_ms
anstelle von regular verwende delay
, bekomme ich ungefähr 1ms
mehr Platz für beide Kanten, aber darunter ist es immer noch dasselbe.
UPDATE 2: Ich habe versucht, auf meinem Nano zu verschiedenen Ausgangspins zu wechseln, sowohl PWM- als auch Nicht-PWM-Pins. Nichts verändert sich.
Was wäre das Problem?
Sie benötigen ein reines Sender- und Empfängerpaar mit einem Kanal. Foto ist ein super regenerativer Empfänger. Sie können den Superhetrodyn-Typ für eine bessere Entstörung verwenden. Im Allgemeinen funktionieren diese Schaltvorgänge bis zu einigen kHz, geben Sie Hi in tx ein und Hi kommt bei Rx heraus.
Der, den Sie haben, hat eine zusätzliche Encoder-MCU. Es liest 4 Tastenzeilen, wartet 120 ms auf die Tastenentprellung, sodass kürzere Eingaben ignoriert werden. Es sendet dann eine codierte Nachricht an den Empfänger, wo eine andere MCU die Nachricht decodiert und Hi / Lo auf 4 Kanälen sendet.
Ihr Modul wird im Allgemeinen innerhalb dieser 4-Tasten-Fernbedienung verwendet (Autotüröffner usw.). Beachten Sie mehr Pin, als out1 bis out4. Das Bare ist nur out1.
Ignacio Vazquez-Abrams
_delay_ms()
stattdessen verwenden?Kann Poyrazoğlu
PeterJ