IR-RF 433-Bluetooth Arduino avlägsen (5 / 7 steg)
Steg 5:
Koden nedan är modifierat från Ray Wangs ursprungliga rf skiss http://rayshobby.net/?p=2427
Mitt exempel skiss
Använda irremote biblioteket
#include < IRremote.h >
IRsend irsend;
Buffert för att lagra inkommande kommandon från seriell port/bluetooth
Strängen inData;
definierar de stift som skickar rf-data
int sendPin = 10;
definierar hur länge hålla en rf burst
#define DELAYSHORT 160
#define DELAYLONG 500
statisk void ookPulse (int på, int off) {
digitalWrite (sendPin, hög);
delayMicroseconds(on);
digitalWrite (sendPin, låg);
delayMicroseconds(off);
}
statisk void pt2262Send (uint14_t signatur, uint10_t kommandot) {
byte i, k;
Skicka 14 gånger
för (k = 0; k < 14; k ++) {
Skicka signatur först
för (jag = 0; jag < 14; i ++) {
om ((signatur > >(13-i)) & 0x1) {
ookPulse (DELAYLONG, DELAYSHORT);
} annat {
ookPulse (DELAYSHORT, DELAYLONG);
}
}
för (jag = 0; jag < 10; i ++) {
om ((kommando > >(9-i)) & 0x1) {
ookPulse (DELAYLONG, DELAYSHORT);
} annat {
ookPulse (DELAYSHORT, DELAYLONG);
}
}
avsluta med en '0'
ookPulse (DELAYSHORT, DELAYLONG);
kort fördröjning
Delay(5);
}
}
void setup() {
Serial.BEGIN(9600);
pinMode (sendPin, produktionen);
}
void loop() {
medan (Serial.available() > 0)
{
röding fick = Serial.read();
inData += fått;
Processen meddelande när K tecken tas emot
om (fick == "K")
{
Serial.Print ("Arduino fick:");
Serial.Print(inData);
om (inData == "TVINPUTK") {irsend.sendNEC (0x1CE3C837, 32); delay(100);}
om (inData == "TVPOWERK") {irsend.sendNEC (0x1CE348B7, 32); delay(100);}
om (inData == "TVINFOK") {irsend.sendNEC (0x1CE330CF, 32); delay(100);}
om (inData == "TVPIXSHAPEK") {irsend.sendNEC (0x1CE3EA15, 32); delay(100);}
om (inData == "TVAUDIOK") {irsend.sendNEC (0x1CE358A7, 32); delay(100);}
om (inData == "TVRESETK") {irsend.sendNEC (0x1CE338C7, 32); delay(100);}
om (inData == "TVCAPTIONK") {irsend.sendNEC (0x1CE38877, 32); delay(100);}
om (inData == "TVSLEEPK") {irsend.sendNEC (0x1CE3B04F, 32); delay(100);}
om (inData == "TVONEK") {irsend.sendNEC (0x1CE3807F, 32); delay(100);}
om (inData == "TVTWOK") {irsend.sendNEC (0x1CE340BF, 32); delay(100);}
om (inData == "TVTHREEK") {irsend.sendNEC (0x1CE3C03F, 32); delay(100);}
om (inData == "TVFOURK") {irsend.sendNEC (0x1CE320DF, 32); delay(100);}
om (inData == "TVFIVEK") {irsend.sendNEC (0x1CE3A05F, 32); delay(100);}
om (inData == "TVSIXK") {irsend.sendNEC (0x1CE3609F, 32); delay(100);}
om (inData == "TVSEVENK") {irsend.sendNEC (0x1CE3E01F, 32); delay(100);}
om (inData == "TVEIGHTK") {irsend.sendNEC (0x1CE310EF, 32); delay(100);}
om (inData == "TVNINEK") {irsend.sendNEC (0x1CE3906F, 32); delay(100);}
om (inData == "TVCHLUPK") {irsend.sendNEC (0x1CE350AF, 32); delay(100);}
om (inData == "TVCHLDWNK") {irsend.sendNEC (0x1CE3D02F, 32); delay(100);}
om (inData == "TVZEROK") {irsend.sendNEC (0x1CE300FF, 32); delay(100);}
om (inData == "TVVOLUPK") {irsend.sendNEC (0x1CE3708F, 32); delay(100);}
om (inData == "TVVOLDWNK") {irsend.sendNEC (0x1CE3F00F, 32); delay(100);}
om (inData == "TVRECALLK") {irsend.sendNEC (0x1CE39867, 32); delay(100);}
om (inData == "TVMUTEK") {irsend.sendNEC (0x1CE318E7, 32); delay(100);}
om (inData == "LIGHTONEK") {pt2262Send (0b00011101010101, 0b0000000011); delay(100);}
om (inData == "LIGHTTWOK") {pt2262Send (0b00011101010101, 0b0000001100); delay(100);}
om (inData == "LIGHTTHREEK") {pt2262Send (0b00011101010101, 0b0000110000); delay(100);}
om (inData == "LIGHTFOURK") {pt2262Send (0b00011101010101, 0b0011000000); delay(100);}
om (inData == "LIGHTFIVEK") {pt2262Send (0b00011101010101, 0b1100000000); delay(100);}
om (inData == "LIGHTALLK") {pt2262Send (0b00011101010101, 0b1111111111); delay(100);}
om (inData == "LIGHTLRK") {pt2262Send (0b00011101010101, 0b0000001111); delay(100);}
BLINKAR VARJE SOCKET PÅ OCH AV I EN PANIK-LÄGE
om (inData == "LIGHTPANICK") {för (int jag = 2; jag < 50; i ++) {
pt2262Send (0b00011101010101, 0b0000000011); Delay(500);
pt2262Send (0b00011101010101, 0b0000000011); Delay(100);
pt2262Send (0b00011101010101, 0b0000001100); Delay(500);
pt2262Send (0b00011101010101, 0b0000001100); Delay(100);
pt2262Send (0b00011101010101, 0b0000110000); Delay(500);
pt2262Send (0b00011101010101, 0b0000110000); Delay(100);
pt2262Send (0b00011101010101, 0b0011000000); Delay(500);
pt2262Send (0b00011101010101, 0b0011000000); Delay(100);} }
om (inData == "TVMEDIAK") {irsend.sendNEC (0x1CE300FF, 32); delay(500);
irsend.sendNEC (0x1CE340BF, 32); Delay(500);
irsend.sendNEC (0x1CE3D02F, 32); Delay(500);
irsend.sendNEC (0x1CE3D02F, 32); Delay(500);
}
Du kan sätta något om och annat för att bearbeta meddelandet bara här sådär:
om (inData == "+++ K") {/ / Glöm inte att lägga till "\n" i slutet av strängen.
Serial.println ("OK. Tryck på h för hjälp.);
}
inData = ""; Tydlig mottagna buffert
}
}
}