Ich möchte einen billigen 433 Mhz-Sender (https://www.amazon.de/gp/product/B00R2U8OEU/) mit der RCSwitch-Library an einem Arduino betreiben. In sämtlichen Examples, die ich dazu gefunden habe, wird immer Pin 10 für den Output verwendet. In meiner Schaltung ist dieser Pin jedoch schon mit anderem Zeug belegt. Muss der Sender an einen PWM-Pin (oder sonst irgendwas Speziellem), oder funktioniert jeder Digitalpin?
Philemon S. schrieb: > Muss der Sender an einen PWM-Pin (oder sonst irgendwas Speziellem), oder > funktioniert jeder Digitalpin? Der Sender ist strohdoof. Wie du ihn mit Daten fütterst, bleibt vollständig dir überlassen.
Wenn ich das halbwegs richtig interpretiere, das einzige was dem Sender vorgegeben ist. Ist die Modulationsart. Wie du was (in der Modulationsart) überträgst (Protokoll) ist ganz dir überlassen. Auch die Pinbelegung. Du musst nur in eventuell vorhandenen Codebeispielen den entsprechenden Pin verwenden. Oder liege ich da falsch?
Wenn Dein freier Pin die gleichen Kunststückchen (Betriebsart) kann, wie der Pin 10: Warum nicht. Der Sender lauscht an seinem Eingang und interessiert sich nicht dafür, wo es herkommt. Wie auch Wolfgang schon ausgeführt hat.
Hi Schau Dir auch folgende Seite Mal an: http://www.datasheet-pdf.info/entry/SC2272-pdf Die dort genannten Chips (2272 Encoder und 2262 Decoder) verhackstückeln das zu übertragende Nibble, da diese Funkmodule keine gleichbleibenden Pegel übertragen können. MfG
Hallo, die RCSwitch-Library will nur irgendeinen Pin, der wird als Outputgenutzt und eben nur zeitrichtig direkt ein- und ausgeschaltet. Schau einfch in den Source der RCSwitch-Lib rein. ;-) Aus RCSwitch.cpp:
1 | /** |
2 | * Transmit a single high-low pulse. |
3 | */ |
4 | void RCSwitch::transmit(HighLow pulses) { |
5 | uint8_t firstLogicLevel = (this->protocol.invertedSignal) ? LOW : HIGH; |
6 | uint8_t secondLogicLevel = (this->protocol.invertedSignal) ? HIGH : LOW; |
7 | |
8 | digitalWrite(this->nTransmitterPin, firstLogicLevel); |
9 | delayMicroseconds( this->protocol.pulseLength * pulses.high); |
10 | digitalWrite(this->nTransmitterPin, secondLogicLevel); |
11 | delayMicroseconds( this->protocol.pulseLength * pulses.low); |
12 | } |
Gruß aus Berlin Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.