Stap 5:
De onderstaande code wordt gewijzigd van Ray Wang's oorspronkelijke rf schets http://rayshobby.net/?p=2427
Mijn voorbeeld schets
Gebruik de irremote bibliotheek
#include < IRremote.h >
IRsend irsend;
Buffer voor het opslaan van binnenkomende opdrachten uit seriële poort/bluetooth
String inData;
Hiermee definieert u de pin die stuurt de gegevens van de RF-
int sendPin = 10;
bepaalt hoe lang te houden van een rf-uitbarsting
#define DELAYSHORT 160
#define DELAYLONG 500
static void ookPulse (int op, int af) {}
digitalWrite (sendPin, hoge);
delayMicroseconds(on);
digitalWrite (sendPin, laag);
delayMicroseconds(off);
}
statische nietige pt2262Send (uint14_t handtekening, uint10_t opdracht) {}
byte i, k;
14 keer verzenden
voor (k = 0; k < 14; k ++) {}
eerste handtekening verzenden
voor (ik = 0; ik < 14; i ++) {}
Als ((handtekening > >(13-i)) & 0x1) {}
ookPulse (DELAYLONG, DELAYSHORT);
} else {}
ookPulse (DELAYSHORT, DELAYLONG);
}
}
voor (ik = 0; ik < 10; i ++) {}
Als ((opdracht > >(9-i)) & 0x1) {}
ookPulse (DELAYLONG, DELAYSHORT);
} else {}
ookPulse (DELAYSHORT, DELAYLONG);
}
}
eindigen met een '0'
ookPulse (DELAYSHORT, DELAYLONG);
korte vertraging
delay(5);
}
}
VOID Setup {}
Serial.begin(9600);
pinMode (sendPin, OUTPUT);
}
void loop {}
terwijl (Serial.available() > 0)
{
char ontvangen = Serial.read();
inData += ontvangen;
Er wordt een proces weergegeven wanneer K teken is ontvangen
Als (ontvangen == 'K')
{
Serial.Print ("Arduino ontvangen:");
Serial.Print(inData);
Als (inData == "TVINPUTK") {irsend.sendNEC (0x1CE3C837, 32); delay(100);}
Als (inData == "TVPOWERK") {irsend.sendNEC (0x1CE348B7, 32); delay(100);}
Als (inData == "TVINFOK") {irsend.sendNEC (0x1CE330CF, 32); delay(100);}
Als (inData == "TVPIXSHAPEK") {irsend.sendNEC (0x1CE3EA15, 32); delay(100);}
Als (inData == "TVAUDIOK") {irsend.sendNEC (0x1CE358A7, 32); delay(100);}
Als (inData == "TVRESETK") {irsend.sendNEC (0x1CE338C7, 32); delay(100);}
Als (inData == "TVCAPTIONK") {irsend.sendNEC (0x1CE38877, 32); delay(100);}
Als (inData == "TVSLEEPK") {irsend.sendNEC (0x1CE3B04F, 32); delay(100);}
Als (inData == "TVONEK") {irsend.sendNEC (0x1CE3807F, 32); delay(100);}
Als (inData == "TVTWOK") {irsend.sendNEC (0x1CE340BF, 32); delay(100);}
Als (inData == "TVTHREEK") {irsend.sendNEC (0x1CE3C03F, 32); delay(100);}
Als (inData == "TVFOURK") {irsend.sendNEC (0x1CE320DF, 32); delay(100);}
Als (inData == "TVFIVEK") {irsend.sendNEC (0x1CE3A05F, 32); delay(100);}
Als (inData == "TVSIXK") {irsend.sendNEC (0x1CE3609F, 32); delay(100);}
Als (inData == "TVSEVENK") {irsend.sendNEC (0x1CE3E01F, 32); delay(100);}
Als (inData == "TVEIGHTK") {irsend.sendNEC (0x1CE310EF, 32); delay(100);}
Als (inData == "TVNINEK") {irsend.sendNEC (0x1CE3906F, 32); delay(100);}
Als (inData == "TVCHLUPK") {irsend.sendNEC (0x1CE350AF, 32); delay(100);}
Als (inData == "TVCHLDWNK") {irsend.sendNEC (0x1CE3D02F, 32); delay(100);}
Als (inData == "TVZEROK") {irsend.sendNEC (0x1CE300FF, 32); delay(100);}
Als (inData == "TVVOLUPK") {irsend.sendNEC (0x1CE3708F, 32); delay(100);}
Als (inData == "TVVOLDWNK") {irsend.sendNEC (0x1CE3F00F, 32); delay(100);}
Als (inData == "TVRECALLK") {irsend.sendNEC (0x1CE39867, 32); delay(100);}
Als (inData == "TVMUTEK") {irsend.sendNEC (0x1CE318E7, 32); delay(100);}
Als (inData == "LIGHTONEK") {pt2262Send (0b00011101010101), 0b0000000011; delay(100);}
Als (inData == "LIGHTTWOK") {pt2262Send (0b00011101010101), 0b0000001100; delay(100);}
Als (inData == "LIGHTTHREEK") {pt2262Send (0b00011101010101), 0b0000110000; delay(100);}
Als (inData == "LIGHTFOURK") {pt2262Send (0b00011101010101), 0b0011000000; delay(100);}
Als (inData == "LIGHTFIVEK") {pt2262Send (0b00011101010101), 0b1100000000; delay(100);}
Als (inData == "LIGHTALLK") {pt2262Send (0b00011101010101), 0b1111111111; delay(100);}
Als (inData == "LIGHTLRK") {pt2262Send (0b00011101010101), 0b0000001111; delay(100);}
KNIPPERT ELKE SOCKET AAN EN UIT IN EEN PANIEK MODUS
Als (inData == "LIGHTPANICK") {voor (int i = 2; ik < 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);} }
Als (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);
}
Kun je sommige indien en anders hier voor het verwerken van het bericht enkel als dat:
Als (inData == "+++ K") {/ / niet vergeten toe te voegen "\n" aan het einde van de tekenreeks.
Serial.println ("OK. Druk op h voor hulp.');
}
inData = ""; Duidelijk ontvangen buffer
}
}
}