Acender Led no Arduino com botão de pressão
int pinVermelho = 10;
int pinAmarelo = 9;
int pinVerde = 8;
int pinBotao = 7;
int pinPedestreVermelho = 3;
int pinPedestreVerde = 2;
int faseSemaforo;
int estadoBotao;
int estadoAnteriorBotao;
int tempoPisca;
int estadoPisca;
void setup() {
// put your setup code here, to run once:
pinMode(pinVerde, OUTPUT);
pinMode(pinAmarelo, OUTPUT);
pinMode(pinVermelho, OUTPUT);
pinMode(pinBotao, INPUT);
pinMode(pinPedestreVerde, OUTPUT);
pinMode(pinPedestreVermelho, OUTPUT);
faseSemaforo = 1;
estadoAnteriorBotao = digitalRead(pinBotao);
tempoPisca = 0;
estadoPisca = HIGH;
}
void loop() {
// put your main code here, to run repeatedly:
estadoBotao = digitalRead(pinBotao);
if ((estadoBotao == LOW) && (estadoAnteriorBotao == HIGH)) {
if (faseSemaforo < 4) {
faseSemaforo = faseSemaforo + 1;
} else {
faseSemaforo = 1;
}
}
estadoAnteriorBotao = estadoBotao;
if (faseSemaforo == 1) { //SEMAFORO ABERTO (VERDE)
digitalWrite(pinVerde, HIGH);
digitalWrite(pinAmarelo, LOW);
digitalWrite(pinVermelho, LOW);
digitalWrite(pinPedestreVerde, LOW);
digitalWrite(pinPedestreVermelho, HIGH);
}
if (faseSemaforo == 2) { //SEMAFORO AMARELO
digitalWrite(pinVerde, LOW);
digitalWrite(pinAmarelo, HIGH);
digitalWrite(pinVermelho, LOW);
digitalWrite(pinPedestreVerde, LOW);
digitalWrite(pinPedestreVermelho, HIGH);
}
if (faseSemaforo == 3) { //SEMAFORO FECHADO (VERMELHO)
digitalWrite(pinVerde, LOW);
digitalWrite(pinAmarelo, LOW);
digitalWrite(pinVermelho, HIGH);
digitalWrite(pinPedestreVerde, HIGH);
digitalWrite(pinPedestreVermelho, LOW);
}
if (faseSemaforo == 4) { //SEMAFORO PEDESTRE PISCANDO
digitalWrite(pinVerde, LOW);
digitalWrite(pinAmarelo, LOW);
digitalWrite(pinVermelho, HIGH);
tempoPisca = tempoPisca + 1;
if (tempoPisca == 400) {
estadoPisca = !estadoPisca;
tempoPisca = 0;
}
digitalWrite(pinPedestreVerde, LOW);
digitalWrite(pinPedestreVermelho, estadoPisca);
}
delay(100);
}
Créditos para https://cursodearduino.net/
Nenhum comentário:
Postar um comentário