Hola, estoy tratando de realizar una lampara la cual cual cambie de color al presionar un
botón, al presionar una vez encienda rojo, presionar otra vez encienda azul y así sucesivamente, pero también quiero que tenga un efecto de luz en el que cambie suavemente entre diferentes colores, mi código lo hace, sin embargo al presionar el botón y llegar a la ultima función y seguir presionando el botón ya no hace el cambio de luz, simplemente se queda en ese estado, llevo horas tratando de resolverlo e investigando pero no consigo el resultado deseado, espero que puedan ayudarme, gracias.
Lo estoy trabajando con arduino uno.
adjunto el esquema de conexiones y el código utilizado.
#define varfija 0
int ledR = 11;
int ledB = 10;
int ledG = 9;
int pinButton = 7;
int buttonValue;
int count = 0;
int brillo;
int button_old = 0;
void setup() {
pinMode(ledR,OUTPUT);
pinMode(ledG,OUTPUT);
pinMode(ledB,OUTPUT);
pinMode(pinButton,INPUT);
}
void loop()
{
buttonValue = digitalRead(pinButton);
if(button_old == 0 && buttonValue == 1)
{
count++;
button_old = 1;
}
if(button_old == 1 && buttonValue == 0)
button_old = 0;
if(count > 4)
count = 0;
if( count == 0 ){
analogWrite(ledR,0);
analogWrite(ledG,0);
analogWrite(ledB,0);
}
else if ( count == 1){
analogWrite(ledR,255);
analogWrite(ledG,0);
analogWrite(ledB,0);
}
else if ( count == 2){
analogWrite(ledR,0);
analogWrite(ledG,255);
analogWrite(ledB,0);
}
else if ( count == 3){
analogWrite(ledR,0);
analogWrite(ledG,0);
analogWrite(ledB,0);
}
else if ( count == 4){
for (int i=1;i<255;i++) {
analogWrite(ledR, i);
analogWrite(ledB, varfija);
analogWrite(ledG, varfija);
delay(5);
}
for (int i=255; i>0; i--) {
analogWrite(ledR, varfija);
analogWrite(ledB, i);
analogWrite(ledG, varfija);
delay(5);}
for (int i=0; i<255; i++) {
analogWrite(ledR, varfija);
analogWrite(ledB, varfija);
analogWrite(ledG, i);
delay(5);
}
}
}