|
Questo articolo serve a trovare i colori più belli per una lampada RBG. Dato che ho scritto un'altro sketch rispetto a quello per la lampada RBG mi sembra doveroso parlarne in sede separata anche se poi le basi dello sketch sono le stesse.
In pratica ho creato delle funzioni che fanno aumentare o diminuire il valore di Rosso, Verde o Blu.
Includete la libreria IRremote.h
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define RED 5
#define BLUE 10
#define GREEN 9
int r = 0;
int b = 0;
int g = 0;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
}
word decodifica(){ // Funzione che decodifica i bit in arrivo dal telecomando NEC
word var = 0x0000;
if (irrecv.decode(&results)) {
var = (results.value);
Serial.println(var,HEX);
return var;
irrecv.resume();
}
}
void loop() {
if (irrecv.decode(&results)) {
decodifica();
colors();
scriviled();
delay(250);
irrecv.resume();
}
}
void colors(){ // Funzione che a seconda del comando fa aumentare
// o diminuire un colore
if (irrecv.decode(&results)) {
if(decodifica() == 0x906F){
r += 5;
Serial.println(r);
}
if(decodifica() == 0xB04f){
r -= 5;
Serial.println(r);
}
if(decodifica() == 0x50AF){
b +=5;
Serial.println(b);
}
if(decodifica() == 0x708F){
b -=5;
Serial.println(b);
}
if(decodifica() == 0x10EF){
g +=5;
Serial.println(g);
}
if(decodifica() == 0x30CF){
g -=5;
Serial.println(g);
}
if(decodifica() == 0xD02F){// Aumenta tutti i colori contemporaneamente
Serial.println("tone up");
r +=5;
b +=5;
g +=5;
}
if(decodifica() == 0x609F){ //Azzera le variabili
Serial.println("azzera");
r=0;
b=0;
g=0;
}
}
irrecv.resume();
}
void scriviled(){ //Scrive il valore delle variabili sul led
analogWrite(RED,r);
analogWrite(BLUE,b);
analogWrite(GREEN,g);
}