Por favor, ajudem-me a encontrar um erro nesse código!

Fiz um código para SIMULAR um semáforo controlável com o LED RGB. A ideia é que, usando o botão, o "pedestre" altere a cor do semáforo para amarela e possa assim atravessar. Mas isso só é possível quando a luz verde estiver acesa. Há tempos específicos para o acendimento de cada luz. 

Mas o resultado não foi o esperado, as luzes acesas foram diferentes e o botão não respondeu. Então, peço-lhes para que me ajudem a identificar possíveis erros no código.

#define red 12
#define green 11
#define blue 10
#define botao 7

double tempo=0;
int estado=0;
int b, bAnterior;

void setup() {
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(botao, INPUT);
}
void loop() {

//verificar se o botao foi apertado
b = digitalRead(botao);
if (b==HIGH && bAnterior==LOW && estado==1) {
estado=2;
digitalWrite(green, HIGH);
digitalWrite(red, HIGH);
digitalWrite(blue, LOW);
tempo=millis();
delay(50);
}
bAnterior = b;

//mudança de estado por passagem de tempo
if (estado==0 && (millis()-tempo)>15000 ) {
digitalWrite(green, HIGH);
digitalWrite(red, LOW);
digitalWrite(blue, LOW);
estado=(estado+1)%3;
tempo=millis();
}
if (estado==1 && (millis()-tempo)>10000 ) {
digitalWrite(green, HIGH);
digitalWrite(red, HIGH);
digitalWrite(blue, LOW);
estado=(estado+1)%3;
tempo=millis();
}
if (estado==2 && (millis()-tempo)>2000 ) {
digitalWrite(green, LOW);
digitalWrite(red, HIGH);
digitalWrite(blue, LOW);
estado=(estado+1)%3;
tempo=millis();
}

}

Exibições: 290

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço