Components and supplies
Arduino Pro Mini 328 - 5V/16MHz
IR receiver (generic)
Apps and platforms
Arduino IDE
Project description
Code
IRremote.zip
c_cpp
1inary file (no preview
main.ino
c_cpp
1#include <IRremote.h> 2#include <TimerOne.h> 3 4#define ldr A0 5#define key_1 0x202807F 6#define key_2 0x20240BF 7#define key_3 0x202C03F 8#define key_4 0x20220DF 9#define key_up 0x202D02F 10#define key_down 0x202708F 11 12int RECV_PIN = 11; 13int val = 0; 14int ir_led = 3; 15int triac = 4; 16bool zeroFlag = false; 17bool irFlag = false; 18unsigned long isLast; 19 20IRrecv irrecv(RECV_PIN); 21decode_results results; 22 23 24void gate(void) 25{ 26 digitalWrite(triac, 1); 27 delayMicroseconds(5); 28 digitalWrite(triac, 0); 29 Timer1.stop(); 30} 31 32void isZero(void) 33{ 34 if(val > 0){ 35 long dimerTime = int(map(val,0,100,8000,150)); 36 Timer1.attachInterrupt(gate,dimerTime); 37 Timer1.start(); 38 } 39 else{ 40 digitalWrite(triac,0); 41 Timer1.stop(); 42 } 43 44} 45 46 47void setup() 48{ 49 Timer1.initialize(); 50 Serial.begin(9600); 51 pinMode(2, INPUT_PULLUP); 52 pinMode(triac, OUTPUT); 53 pinMode(ir_led, OUTPUT); 54 pinMode(13, OUTPUT); 55 irrecv.enableIRIn(); // Start the receiver 56 attachInterrupt(0, isZero,FALLING); 57 digitalWrite(ir_led,1); 58} 59void loop() 60{ 61 if (irrecv.decode(&results)) 62 { 63 digitalWrite(ir_led,0); 64 delay(20); 65 digitalWrite(ir_led,1); 66 switch (results.value) 67 { 68 case key_1: 69 val = 100; 70 break; 71 case key_2: 72 val = 0; 73 break; 74 case key_3: 75 break; 76 case key_4: 77 break; 78 case key_up: 79 val = val +10; 80 if (val > 100) 81 val = 100; 82 break; 83 case key_down: 84 val = val - 10; 85 if (val < 0) 86 val = 0; 87 break; 88 } 89 irrecv.resume(); // Receive the next value 90 } 91 92} 93 94
TimerOne.zip
c_cpp
1inary file (no preview
IRremote.zip
c_cpp
1inary file (no preview
main.ino
c_cpp
1#include <IRremote.h> 2#include <TimerOne.h> 3 4#define ldr A0 5#define 6 key_1 0x202807F 7#define key_2 0x20240BF 8#define key_3 0x202C03F 9#define 10 key_4 0x20220DF 11#define key_up 0x202D02F 12#define key_down 0x202708F 13 14int 15 RECV_PIN = 11; 16int val = 0; 17int ir_led = 3; 18int triac = 19 4; 20bool zeroFlag = false; 21bool irFlag = false; 22unsigned long isLast; 23 24IRrecv 25 irrecv(RECV_PIN); 26decode_results results; 27 28 29void gate(void) 30{ 31 32 digitalWrite(triac, 1); 33 delayMicroseconds(5); 34 digitalWrite(triac, 35 0); 36 Timer1.stop(); 37} 38 39void isZero(void) 40{ 41 if(val > 0){ 42 43 long dimerTime = int(map(val,0,100,8000,150)); 44 Timer1.attachInterrupt(gate,dimerTime); 45 46 Timer1.start(); 47 } 48 else{ 49 digitalWrite(triac,0); 50 51 Timer1.stop(); 52 } 53 54} 55 56 57void setup() 58{ 59 Timer1.initialize(); 60 61 Serial.begin(9600); 62 pinMode(2, INPUT_PULLUP); 63 pinMode(triac, OUTPUT); 64 65 pinMode(ir_led, OUTPUT); 66 pinMode(13, OUTPUT); 67 irrecv.enableIRIn(); 68 // Start the receiver 69 attachInterrupt(0, isZero,FALLING); 70 digitalWrite(ir_led,1); 71} 72void 73 loop() 74{ 75 if (irrecv.decode(&results)) 76 { 77 digitalWrite(ir_led,0); 78 79 delay(20); 80 digitalWrite(ir_led,1); 81 switch (results.value) 82 83 { 84 case key_1: 85 val = 100; 86 break; 87 88 case key_2: 89 val = 0; 90 break; 91 case 92 key_3: 93 break; 94 case key_4: 95 break; 96 case 97 key_up: 98 val = val +10; 99 if (val > 100) 100 val 101 = 100; 102 break; 103 case key_down: 104 val = val 105 - 10; 106 if (val < 0) 107 val = 0; 108 break; 109 110 } 111 irrecv.resume(); // Receive the next value 112 } 113 114} 115 116
Downloadable files
dimmer
dimmer
dimmerjpg_14UypPNqt6.jpg
dimmerjpg_14UypPNqt6.jpg
dimmerjpg_14UypPNqt6.jpg
dimmerjpg_14UypPNqt6.jpg
dimmer
dimmer
Comments
Only logged in users can leave comments