const uint8_t prologue[] = { 2, 2, 2, 2, 2, 2, 4, 2, 4, 2, 2, 3, 2, 2, 3, 2, 2, 2, 2, 2, }; const uint8_t prologueSize = sizeof(prologue) / sizeof(uint8_t); const uint8_t epilogue[] = { 3, 4, 3, }; const uint8_t epilogueSize = sizeof(epilogue) / sizeof(uint8_t); const uint8_t onSignal[] = { 4, 2, 2, 2, 2, 3, 2, }; const uint8_t onSize = sizeof(onSignal) / sizeof(uint8_t); const uint8_t offSignal[] = { 2, 2, 2, 2, 2, 4, 3, }; const uint8_t offSize = sizeof(offSignal) / sizeof(uint8_t); const int pulseScale = 260; // usec per sample unit const int nTxPin = 7; // Arduino digital pin you're using for radio data. void transmitArray(const uint8_t pulses[], uint8_t pulseCount) { for(int pulse = 0; pulse < pulseCount; ++pulse) { int pulseWidth = pulses[pulse]; if (pulseWidth>0) { digitalWrite(nTxPin, HIGH); delayMicroseconds(pulseScale*pulseWidth); } else { digitalWrite(nTxPin, LOW); delayMicroseconds(pulseScale*(-pulseWidth)); } } } void transmitSignal(const uint8_t signal[], uint8_t signalSize) { transmitArray(prologue,prologueSize); transmitArray(signal,signalSize); transmitArray(epilogue,epilogueSize); } void sendTrain(const uint8_t signal[], uint8_t signalSize) { transmitSignal(signal,signalSize); delay(1000); transmitSignal(signal,signalSize); delay(2000); transmitSignal(signal,signalSize); } /** * The setup() function is called when a sketch starts. Used to initialize * variables, pin modes, start using libraries, etc. The setup function will * only run once, after each powerup or reset of the Arduino board. */ void setup() { pinMode(nTxPin, OUTPUT); digitalWrite(nTxPin, LOW); Serial.begin(9600); Serial.println("Press 0 to turn off heating"); Serial.println("Press 1 to turn on heating"); } /** * The loop() function loops consecutively, allowing the program to change and * respond. Used to actively control the Arduino board. */ void loop() { if (Serial.available() > 0) { int nIncomming = Serial.read(); if (nIncomming == 49) { // char code for 1 Serial.println("ON"); sendTrain(onSignal,onSize); } if (nIncomming == 48) { // char code for 0 Serial.println("OFF"); sendTrain(offSignal,offSize); } Serial.println("Press 0 to turn off heating"); Serial.println("Press 1 to turn on heating"); } }