Estoy tratando de cambiar entre 4 brillos diferentes de un LED usando un Arduino Uno. He usado analogWrite y no digitalWrite con PWM. El problema al que me enfrento es que el brillo no cambia en absoluto cuando se presiona el botón. Aquí está mi código:
#define led 11 //assign pin 11 to LED
#define BUTTON 7 //assign pin 7 to pushbutton
int val=0; //val used to check current status of pushbutton later in the program
int old_val=0; //old_val to check previous status
int state=0; //state to check button presses
void setup()
{
pinMode(led,OUTPUT);
pinMode(BUTTON,INPUT);
}
void loop()
{
val=digitalRead(BUTTON); //check status of pushbutton
if((val==HIGH)&&(old_val==LOW)) //button pressed
{
state++; //increment state
delay(10); //debounce consideration
if(state>4) //want only 4 brightness options
{
state=1;
delay(10);
}
}
old_val=val;
if(state==1)
{
analogWrite(led,0); //0 brightness
}
else if(state==2)
{
analogWrite(led,75);
}
else if(state==3)
{
analogWrite(led,150);
}
else if(state==4)
{
analogWrite(led,255);
}
}
¿Cómo puedo resolver este problema?