#define RF_PIN 3 void setup() { pinMode(RF_PIN, OUTPUT); Serial.begin(9600); } #define dit 179 // 181 us #define dah 575 // 578 us void light_on() { noInterrupts(); digitalWrite(RF_PIN, 0); for (int i=0; i<10; i++){ delayMicroseconds(5000); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); } interrupts(); } void light_off(){ noInterrupts(); digitalWrite(RF_PIN, 0); for (int i=0; i<10; i++){ delayMicroseconds(5000); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dah); digitalWrite(RF_PIN, 0); delayMicroseconds(dit); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); delayMicroseconds(dah); digitalWrite(RF_PIN, 1); delayMicroseconds(dit); digitalWrite(RF_PIN, 0); } interrupts(); } void loop() { if (Serial.available()){ char b = Serial.read(); Serial.write(b+1); if (b == '1'){ light_on(); } else { light_off(); } } }