#include int loga[64]= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 25, 28, 30, 33, 36, 39, 42, 46, 49, 53, 56, 60, 64, 68, 72, 77, 81, 86, 90, 95, 100, 105, 110, 116, 121, 127, 132, 138, 144, 150, 156, 163, 169, 176, 182, 189, 196, 203, 210, 218, 225, 233, 240, 248, 255 }; #define PWM1 3 // output PWM pins #define PWM2 5 #define PWM3 6 #define PWM4 9 #define OFF 0 #define ON 1 int RECV_PIN = 2; const unsigned long KEYPWRTSTCODE = 0x3A00FE45; // tester transiever const unsigned long KEYPWR2CODE = 0x20DF807F; // second IR transiever const unsigned long KEYPWRCODE = 0x4FB00FF; // main IR transiever const unsigned long KEYUPCODE = 0x4FB10EF; // UP code (ON) const unsigned long KEYOKCODE = 0x4FB40BF; // OK code (ON) IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver pinMode(PWM1,OUTPUT); // init output pins pinMode(PWM2,OUTPUT); pinMode(PWM3,OUTPUT); pinMode(PWM4,OUTPUT); } unsigned long last = millis(); int eyes=OFF; // mode eyes (ON/OFF) int power=0; // power of light eyes int del1=1; // delay mode ON1 msec int del2=1; // delay mode ON2 msec int del3=1; // delay mode ON3 msec int del4=1; // delay mode ON4 msec int del5=2000; // delay mode full ON int del10=2; // delay mode OFF1 msec int del20=4; // delay mode OFF2 msec int del30=8; // delay mode OFF3 msec int del40=16; // delay mode OFF4 msec int del50=1; // delay mode full OFF int u=0; // read power value (0-1024) int f=0; // power control flashes void loop() { if (irrecv.decode(&results)) { // If it's been at least 1/4 second since the last // IR received, toggle the relay if (millis() - last > 250) { switch (results.value){ case KEYPWRCODE: case KEYPWR2CODE: case KEYPWRTSTCODE: u = analogRead(A0); if(u<573) f=1; if(u>=573 && u<601) f=2; if(u>=601 && u<628) f=3; if(u>=628 && u<655) f=4; if(u>=655 && u<683) f=5; if(u>=683 && u<710) f=6; if(u>=710 && u<737) f=7; if(u>=737 && u<765) f=8; if(u>=765 && u<792) f=9; if(u>=792) f=10; for(int i=1; i<=f; i++) { analogWrite(PWM1, 255); delay(500); analogWrite(PWM1, 0); delay(500); } break; case KEYUPCODE: case KEYOKCODE: for(power=0; power<64; power++) { analogWrite(PWM1, loga[power]); delay(del1); } for(power=0; power<64; power++) { analogWrite(PWM2, loga[power]); delay(del2); } for(power=0; power<64; power++) { analogWrite(PWM3, loga[power]); delay(del3); } for(power=0; power<64; power++) { analogWrite(PWM4, loga[power]); delay(del4); } delay(del5); // full ON for(power=63; power>=0; power--) { analogWrite(PWM1, loga[power]); delay(del10); } for(power=63; power>=0; power--) { analogWrite(PWM2, loga[power]); delay(del20); } for(power=63; power>=0; power--) { analogWrite(PWM3, loga[power]); delay(del30); } for(power=63; power>=0; power--) { analogWrite(PWM4, loga[power]); delay(del40); } delay(del50); // full OFF break; } } last = millis(); if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } } };