Avkodning och skicka 433MHz RF koder med Arduino och rc-switch (5 / 9 steg)
Steg 5: Skriva kod för din enhet
RC-switch har inbyggda funktioner som skickar kodnamn för vissa natively kompatibla enheter - så om du har en av dessa enheter (inte jag) du bör kunna använda metoderna RCSwitch::switchOn() och RCSwitch::switchOff() i TypeX exempel skisser.
Om inte, måste du manuellt ställa in pulslängd och protokoll och skicka raw koder med hjälp av RCSwitch::send() eller RCSwitch::sendTriState() metoder, som visas nedan.
Följande kod – baserat på "SendDemo" skissen – kopplar en av min avlägsen kontrollerade elnätet växlar på och av varje sekund. Observera puls längd måste ställas in manuellt eftersom det skiljer sig från puls standardlängden för protokoll 1. Jag har skapat en funktion – command() – som accepterar kanalnummer och på/av som heltal argument och ser upp motsvarande adress och data kommandon till enheten. För din enhet kan du skapa en liknande funktion, eller bara skicka raw koderna.
#include < RCSwitch.h >
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.BEGIN(9600);
Sändaren är ansluten till Arduino Pin #10
mySwitch.enableTransmit(10);
Valfritt ange puls längd.
mySwitch.setPulseLength(321);
Ange protokoll (standard är 1, kommer att fungera för de flesta butiker)
mySwitch.setProtocol(2);
Valfritt antal överföring upprepningar.
mySwitch.setRepeatTransmit(15);
pinMode(13,OUTPUT);
}
void loop() {
mySwitch.send("100000101100100011001000");
digitalWrite(13,HIGH);
Delay(500);
digitalWrite(13,LOW);
Delay(10000);
}
Här är koden som öppnar och stänger min garageport (simulerar knappen 1) var 10 sekunder. Det blinkar också ombord LED att ange ett kommando har sänts.
#include < RCSwitch.h >
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.BEGIN(9600);
Sändaren är ansluten till Arduino Pin #10
mySwitch.enableTransmit(10);
Valfritt ange puls längd.
mySwitch.setPulseLength(321);
Ange protokoll (standard är 1, kommer att fungera för de flesta butiker)
mySwitch.setProtocol(2);
Valfritt antal överföring upprepningar.
mySwitch.setRepeatTransmit(15);
pinMode(13,OUTPUT);
}
void loop() {
mySwitch.send("100000101100100011001000");
digitalWrite(13,HIGH);
Delay(500);
digitalWrite(13,LOW);
Delay(10000);
}