Não sei o que estou fazendo de errado!!

Deveria fazer: Ele começa com led no máximo (250), aperta uma vez abaixa para 120, mais uma 50 e por ultimo apaga o led. Se clicar mais uma vez ele retorna para posição 1.

Problema: Quando eu aperto o botão, o led faz as 4 fases, e volta a ficar aceso, nao entendo o porque!!

HELPPPPP

int estado = 1;

void setup() {
pinMode(10,OUTPUT);
pinMode(2,INPUT);

}
void loop() {

if (digitalRead(2) == HIGH) {
estado++;
delay(300);


}

if (estado==5){
estado=1;
}

switch (estado){

case 1:
analogWrite (10,250);
break;

case 2:
analogWrite (10,120);
break;
case 3:
analogWrite (10,50);
break;
case 4:
analogWrite (10,0);
break;

}


}

Exibições: 435

Responder esta

Respostas a este tópico

Isso pode ser um efeito chato chamado de "debounce",

Simplificadamente falando: Quando você pressiona o botão e testa com HIGH o Arduino demora um certo tempo para saber que você soltou o botão.

Veja aqui como resolver esse problema:

https://www.arduino.cc/en/Tutorial/Debounce

Obrigado amigo, vou comprar um resistor de 10k e testar! valeu

Daniel, na verdade o problema não é o resistor.

Mas a correção é no sketch. No exemplo que te passei mostra como resolver o problema do debounce

O resistor é importante usar para não queimar o led.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço