// три кнопки, каждая добавляет яркость цвету
#include <IRremote.hpp>
#define RED_LED 6
#define BLUE_LED 9
#define GREEN_LED 10
#define IR 12
int redB=0;
int gB=0;
int blB=0;
int brightness=255;
int period=250;
void setLed(int red, int green, int blue, int brightness){
analogWrite(RED_LED, red * brightness);
analogWrite(GREEN_LED, green * brightness);
analogWrite(BLUE_LED, blue * brightness);
}
void setup(){
Serial.begin(9600);
IrReceiver.begin(IR,DISABLE_LED_FEEDBACK);
pinMode(IR,INPUT);
pinMode(RED_LED,OUTPUT);
pinMode(GREEN_LED,OUTPUT);
pinMode(BLUE_LED,OUTPUT);
}
void loop(){
static uint32_t tmr=millis();
static bool flag=false;
static bool pause=false;
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.command);
switch(IrReceiver.decodedIRData.command){
case 162:{
redB=0;
gB=0;
blB=0;
break;
}
case 2:{
brightness+=10;
if (brightness>255)brightness=255;
break;
}
case 152:{
brightness-=10;
if (brightness<0)brightness=0;
break;
}
case 48:{
redB=1;
gB=0;
blB=0;
break;
}
case 24:{
redB=0;
gB=1;
blB=0;
break;
}
case 122:{
redB=0;
gB=0;
blB=1;
break;
}
case 144:{
period-=10;
if (period<100)period=100;
break;
}
case 224:{
period+=10;
if (period>1000)period=1000;
break;
}
case 168:{
pause=!pause;
break;
}
}
IrReceiver.resume();
}
if(millis()-tmr>period && !pause){
tmr=millis();
setLed(redB,gB,blB,brightness*flag);
flag=!flag;
}
else if(pause)setLed(redB,gB,blB,brightness);
}