IRlicht/source/irlicht.ino

138 lines
4.4 KiB
Arduino
Raw Normal View History

2014-04-09 17:38:14 +02:00
#include <IRremote.h>
#include <simtronyx_RGB_LED.h>
2014-04-09 17:38:14 +02:00
#define LED_WHITE 5
#define LED_GREEN 6
2014-04-09 17:38:14 +02:00
#define LED_BLUE 10
#define LED_RED 9
2014-04-09 17:38:14 +02:00
#define IR_PIN 2
2014-04-09 17:38:14 +02:00
#define IR_PROTOCOL 1
#define IR_FILTER 0xF70000
#define IR_MASK 0xFF0000
#define IR_KEY_1 0xF720DF
#define IR_KEY_2 0xF710EF
#define IR_KEY_3 0xF730CF
#define IR_KEY_4 0xF70000 // key is broken :-(
#define IR_KEY_5 0xF728D7
#define IR_KEY_6 0xF7A05F
#define IR_KEY_7 0xF7906F
#define IR_KEY_8 0xF7B04F
#define IR_KEY_9 0xF78877
#define IR_KEY_FLASH 0xF7D02F
#define IR_KEY_STROBE 0xF7F00F
#define IR_KEY_FADE 0xF7C837
#define IR_KEY_SMOOTH 0xF7E817
#define IR_KEY_DIM 0xF7807F
#define IR_KEY_BRIGHT 0xF700FF
#define IR_KEY_ALLON 0xF7C03F
#define IR_KEY_ALLOFF 0xF740BF
#define IR_KEY_LIGHT10 0xF7A857
#define IR_KEY_LIGHT11 0xF7609F
#define IR_KEY_LIGHT12 0xF750AF
#define IR_KEY_LIGHT13 0xF7708F
#define IR_KEY_LIGHT14 0xF748B7
#define IR_KEY_LIGHT15 0xF76897
#define IR_KEY_LIGHT16 0xF7E01F
2014-04-24 23:56:24 +02:00
#define MODE_OFF 0x00
#define MODE_CONSTANT 0x01
#define MODE_FLASH 0x02
#define MODE_STROBE 0x03
#define MODE_FADE 0x04
#define MODE_SMOOTH 0x05
int white = 0x01;
2014-04-24 23:56:24 +02:00
int mode = MODE_CONSTANT;
boolean strobe = false;
2014-04-09 17:38:14 +02:00
IRrecv irrecv(IR_PIN);
decode_results results;
simtronyx_RGB_LED strip(LED_RED, LED_GREEN, LED_BLUE);
2014-04-09 17:38:14 +02:00
void setup() {
Serial.begin(9600);
2014-04-24 23:56:24 +02:00
pinMode(LED_WHITE, OUTPUT);
analogWrite(LED_WHITE, white);
strip.setRGB(0x00, 0x00, 0x00);
2014-04-09 17:38:14 +02:00
irrecv.enableIRIn(); // Start the receiver
}
void loop() {
strip.loop();
2014-04-09 17:38:14 +02:00
if (irrecv.decode(&results)) {
if (results.decode_type == IR_PROTOCOL) {
if (results.value != 0xFFFFFFFF) {
//if (results.value & IR_MASK == IR_FILTER) {
2014-04-24 23:23:01 +02:00
Serial.println(results.value);
2014-04-09 17:38:14 +02:00
switch (results.value) {
2014-04-24 23:56:24 +02:00
case IR_KEY_1: mode = MODE_CONSTANT; strip.animateStop(); strip.setR(0x00); break;
case IR_KEY_2: mode = MODE_CONSTANT; strip.animateStop(); strip.setG(0x00); break;
case IR_KEY_3: mode = MODE_CONSTANT; strip.animateStop(); strip.setB(0x00); break;
case IR_KEY_4: mode = MODE_CONSTANT; strip.animateStop(); strip.setR(0x80); break;
case IR_KEY_5: mode = MODE_CONSTANT; strip.animateStop(); strip.setG(0x80); break;
case IR_KEY_6: mode = MODE_CONSTANT; strip.animateStop(); strip.setB(0x80); break;
case IR_KEY_7: mode = MODE_CONSTANT; strip.animateStop(); strip.setR(0xFF); break;
case IR_KEY_8: mode = MODE_CONSTANT; strip.animateStop(); strip.setG(0xFF); break;
case IR_KEY_9: mode = MODE_CONSTANT; strip.animateStop(); strip.setB(0xFF); break;
case IR_KEY_STROBE:
mode = MODE_STROBE;
strip.animateStop();
strip.setRGB(0x00, 0x00, 0x00);
break;
2014-04-23 00:26:51 +02:00
case IR_KEY_FADE:
2014-04-24 23:56:24 +02:00
mode = MODE_FADE;
strip.animateColorsClear();
strip.animateColorAdd(255, 0, 0, 100);
strip.animateColorAdd( 0, 255, 0, 100);
strip.animateColorAdd( 0, 0, 255, 100);
strip.animateStart();
break;
case IR_KEY_SMOOTH:
mode = MODE_SMOOTH;
strip.animateColorsClear();
2014-04-23 00:26:51 +02:00
strip.animateColorAdd(255, 0, 0, 100);
strip.animateColorAdd(255, 255, 0, 100);
strip.animateColorAdd( 0, 255, 0, 100);
strip.animateColorAdd( 0, 255, 255, 100);
strip.animateColorAdd( 0, 0, 255, 100);
strip.animateColorAdd(255, 0, 255, 100);
strip.animateStart();
break;
2014-04-09 17:38:14 +02:00
case IR_KEY_DIM:
white -= 0x10;
if (white < 0x00) {
white = 0x00;
}
analogWrite(LED_WHITE, white);
break;
case IR_KEY_BRIGHT:
white += 0x10;
if (white > 0xFF) {
white = 0xFF;
}
analogWrite(LED_WHITE, white);
break;
default:
Serial.print("proto: ");
Serial.print(results.decode_type, DEC);
Serial.print(" code: ");
Serial.println(results.value, HEX);
break;
}
}
}
irrecv.resume(); // Receive the next value
}
2014-04-24 23:56:24 +02:00
if (mode == MODE_STROBE) {
strobe = !strobe;
if (strobe) {
analogWrite(LED_WHITE, white);
} else {
analogWrite(LED_WHITE, 0x00);
}
}
2014-04-09 17:38:14 +02:00
}
2014-04-13 23:43:32 +02:00
// vim:filetype=c:ts=2