#include #define RECV_PIN 7 IRrecv irrecv(RECV_PIN); decode_results results; unsigned long key_value = 0; //#include "TimerOne.h" char serialData = 0; int speed = 0; int buzzer = 13; const byte ZCDinterruptPin = 2; void setup() { irrecv.enableIRIn(); irrecv.blink13(false); Serial.begin(9600); pinMode(13, OUTPUT); // Timer1.initialize(500000); // Micro Seconds pinMode(2, INPUT); pinMode(A0, OUTPUT); } void callback() { delayMicroseconds(speed); // read AD0 digitalWrite(A0, HIGH); delayMicroseconds(50); //delay 50 uSec on output pulse to turn on triac digitalWrite(A0, LOW); } void loop() { if (irrecv.decode(&results)) { if (results.value == 0XFFFFFFFF) results.value = key_value; if ((results.value == 0x88C000C) || (results.value == 0x88C0084) || (results.value == 0x9718DE1F) || // LOW PLASMA (results.value == 0x4392537E) || (results.value == 0xA7CEC72B) || (results.value == 0xFB766165) || (results.value == 0x9EFF2F3F)) { beep(); speed = 2500; attachInterrupt(digitalPinToInterrupt(ZCDinterruptPin), callback, RISING); // attach Interrupt at PIN2 } if ((results.value == 0x8810089) || (results.value == 0x8810) || // MID JET COOL (results.value == 0x3A398D8A) || (results.value == 0x71199AC5) || (results.value == 0xEE419856) || (results.value == 0x76105F79)) { beep(); speed = 4866; attachInterrupt(digitalPinToInterrupt(ZCDinterruptPin), callback, RISING); // attach Interrupt at PIN2 } if ((results.value == 0x8808350) || (results.value == 0x880830B) || (results.value == 0x880832D) || // HIGH FAN SPEED (results.value == 0x8178C8D1) || (results.value == 0x1308451C) || (results.value == 0xA11244F4) || (results.value == 0xD0AE2562) || (results.value == 0x2F0AD5BB)) { beep(); speed = 6000; attachInterrupt(digitalPinToInterrupt(ZCDinterruptPin), callback, RISING); // attach Interrupt at PIN2 } if ((results.value == 0x88C0051) || (results.value == 0x3393ACC8) || (results.value == 0x1035C9DA) || // POWER OFF (results.value == 0x993AE700) || (results.value == 0x88C0)) { beep(); detachInterrupt(digitalPinToInterrupt(ZCDinterruptPin)); } key_value = results.value; irrecv.resume(); } } void beep(){ digitalWrite(13, HIGH); delay(100); digitalWrite(13, LOW); }