#include <IRremote.h> // use the library
#define BLU 9
#define VERDE 10
#define ROSSO 11
int receiver = 12; // pin 1 of IR receiver to Arduino digital pin 11
boolean stateblu;
boolean stateverde;
boolean staterosso;
boolean statemeno;
boolean statepiu;
byte brightness;
IRrecv irrecv(receiver);
decode_results results;
void setup()
{
pinMode(BLU, OUTPUT);
pinMode(VERDE, OUTPUT);
pinMode(ROSSO, OUTPUT);
irrecv.enableIRIn(); // Start the receiver
brightness = 255;
}
void loop()
{
if (irrecv.decode(&results)) //controllo se il ricevitore IR ha rilevato un segnale
{
if (results.value == 16724175) //numero 1
{
statemeno = 0; //se ho premuto un tasto differente da più o meno l'hold dei tasti viene disattivato
statepiu = 0;
stateblu = 1 - stateblu;
}
if (results.value == 16718055) //numero 2
{
statemeno = 0;
statepiu = 0;
stateverde = 1 - stateverde;
}
if (results.value == 16743045) //numero 3
{
statemeno = 0;
statepiu = 0;
staterosso = 1 - staterosso;
}
if (results.value == 16748655) //tasto più
{
statemeno = 0;
statepiu = 1;
if (brightness < 251)
{
brightness = brightness + 4;
}else{
brightness = 255;
}
}
if (results.value == 16754775) //tasto meno
{
statemeno = 1;
statepiu = 0;
if (brightness > 4)
{
brightness = brightness - 4;
}else{
brightness = 0;
}
}
if (results.value == 4294967295) //quando un qualsiasi tasto è tenuto premuto
{
if (statepiu == 1) //se il tasto più è tenuto premuto
{
if (brightness < 251)
{
brightness = brightness + 4; //aumento la luminosità
}else{
brightness = 255;
}
}
if (statemeno == 1) //se il tasto meno è tenuto premuto
{
if (brightness > 4)
{
brightness = brightness - 4; //diminuisco la lumiosità
}else{
brightness = 0;
}
}
}
irrecv.resume();// receive the next value
}
if (stateblu == 1)
{
analogWrite(BLU, brightness);
}else{
analogWrite(BLU, 0);
}
if (staterosso == 1)
{
analogWrite(ROSSO, brightness);
}else{
analogWrite(ROSSO, 0);
}
if (stateverde == 1)
{
analogWrite(VERDE, brightness);
}else{
analogWrite(VERDE, 0);
}
}
ho scritto questo semplice programma spero si possa capire, tramite un telecomando IR comando 3 led collegati ai pin PWM 9-10-11, che corrispondono ai tasti 1-2-3 del telecomando, con i tasti - e + vario la luminosità dei led, aumentando o diminuendo la modulazione di impulso (PWM).
Il problema si riscontra quando vado ad accendere il led collegato al pin 10 con la modulazione di impulso variata (cioè che nn corrisponde a quella prestabilita nel setup, che è di 255), se l'accendo con la luminosità gia variata la scheda nn risponde piùe i led accesi rimangono tali, se invece vario la luminosita con solo il led collecato al pin 10 il led si spegne, ho provato a cambiare i pin dei led e il problema si riscontra solo con il 10 e il 3.
Dimenticavo ho un scheda arduino uno e uso un lede rgb.
Mi sapreste spiegare la motivazione di questa anomalia