SEMÁFORO NO ARDUINO
MATHEUS GIORDANI COSTA VELTRONI
RA 2833639
SÃO PAULO
2024
1
int vdVeiculo = 11;
int amVeiculo = 12;
int vmVeiculo = 13;
int vdPedestre = 6;
int vmPedestre = 7;
int btSemarofo = 2;
unsigned long tempoAtual = 0;
unsigned long tempoAnterior = 0;
void setup() {
// Configuraç~
ao dos pinos
pinMode(vdVeiculo, OUTPUT);
pinMode(amVeiculo, OUTPUT);
pinMode(vmVeiculo, OUTPUT);
pinMode(vdPedestre, OUTPUT);
pinMode(vmPedestre, OUTPUT);
pinMode(btSemarofo, INPUT);
Estado1(); // Inicia o semáforo no estado 1
}
void loop() {
tempoAtual = millis(); // Atualiza o tempo atual
// Verifica se o bot~
ao está pressionado ou se passou 15 segundos
if(digitalRead(btSemarofo) == LOW || tempoAtual - tempoAnterior >= 15000) {
// Altera os estados com atraso
Estado2();
delay(3000);
Estado3();
2
delay(20000);
tempoAnterior = millis(); // Atualiza o tempo da última transiç~
ao
Estado1(); // Retorna para o estado 1
}
}
// Semáforo verde para os veı́culo
void Estado1() {
digitalWrite(vdVeiculo, HIGH);
digitalWrite(amVeiculo, LOW);
digitalWrite(vmVeiculo, LOW);
digitalWrite(vdPedestre, LOW);
digitalWrite(vmPedestre, HIGH);
}
// Semáforo amarelo para os veı́culo
void Estado2() {
digitalWrite(vdVeiculo, LOW);
digitalWrite(amVeiculo, HIGH);
digitalWrite(vmVeiculo, LOW);
digitalWrite(vdPedestre, LOW);
digitalWrite(vmPedestre, HIGH);
}
// Semáforo vermelho para os veı́culo
void Estado3() {
digitalWrite(vdVeiculo, LOW);
digitalWrite(amVeiculo, LOW);
digitalWrite(vmVeiculo, HIGH);
digitalWrite(vdPedestre, HIGH);
digitalWrite(vmPedestre, LOW);
}