Semáforo com Botão de Pedestres usando Arduino
O primeiro projeto que fizemos era um simples pisca led didático. Nesta página vamos apresentar um semáforo com botão de pedestre usando uma nova programação feita pelo Arduíno IDE e a placa UNO. Você pode realizar o download gratuito do software de programação acessando aqui.
//Semáforo interativo
//Definindo as variáveis
int pedVermelho = 9; // LED Vermelho Pedestre no Pino 9
int pedVerde = 8; // LED Verde Pedestre no Pino 9
int botao = 2; // Botao no Pino 2
int carVermelho = 12; // LED Vermelho Carro no Pino 12
int carAmarelo = 11; // LED Amarelo Carro no Pino 11
int carVerde = 10; // LED Verde Carro no Pino 10
int cruzamento = 5000; // Tempo para que os pedestres atravessem
unsigned long changeTime; // Tempo desde que o botao foi pressionado
void setup (){ // Aqui são definidas os pinos referentes aos leds como saídas
pinMode(carVermelho, OUTPUT);
pinMode(carAmarelo, OUTPUT);
pinMode(carVerde, OUTPUT);
pinMode(pedVermelho, OUTPUT);
pinMode(pedVerde, OUTPUT);
pinMode(botao, INPUT);
//Acende a luz verde
digitalWrite(carVerde, HIGH);
digitalWrite(pedVermelho, HIGH);
}
void loop(){
int state = digitalRead(botao);
// Verifica se o botão foi pressionado e se passaram 5 seg desde a ultima
if (state ==HIGH && (millis() – changeTime) > 5000){
// Chama função para alterar luzes
changeLights();
}
}
void changeLights(){
digitalWrite(carVerde, LOW); // Apaga LED verde
digitalWrite(carAmarelo, HIGH); //Acende LED amarelo
delay(4000); //espera 2 segs
digitalWrite(carAmarelo, LOW); //Apaga LED amarelo
digitalWrite(carVermelho, HIGH); //Apaga LED vermelho
delay(1000); // Espera 1 seg por seguranca
digitalWrite(pedVermelho, LOW); // Apaga vermelho pedestres
digitalWrite(pedVerde, HIGH); // Acende verde pedestres
delay(cruzamento); // Espera por um intervalo de tempo predefinido
// Pisca o verde dos pedestre
for (int x=0; x<10; x++){
digitalWrite (pedVerde, HIGH);
delay(250);
digitalWrite (pedVerde, LOW);
delay(250);
}
// Acende vermelho pedestres
digitalWrite (pedVermelho, HIGH);
delay(500);
digitalWrite (carVermelho, LOW); // Apaga vermelho
delay(0);
digitalWrite (carVerde, HIGH); // Acende verde
// Registra o tempo desde a ultima alteracao no semáforo
changeTime = millis( );
}
Digite os códigos nesta mesma ordem e faça o upload para a placa usando o cabo USB e o IDE. Você verá em instantes que os leds TX e RX da placa vão piscar rapidamente e o programa será executado no led da placa de testes.
As linhas de código seguem comentadas, após os //, que são os caracteres usados para indicar que o que vem após é um comentário e não deve ser lido pelo compilador. A formatação do código pode ser vista no vídeo abaixo. Observe o funcionamento do projeto:
Uma vez alimentada, o projeto funciona assim: O semáforo de carros (composto na placa por 3 leds) uma vez verde, permanece em vermelho o semáforo de pedestres (composto por 2 leds). Quando pressionado o botão na placa, a passagem do pedestre se abre mediante atenção e fechamento no semáforo para carros. Após um tempo de travessia, o sistema volta ao seu estado inicial. As cores são reproduzidas como no sistema real. Observe o funcionamento prático e a formatação do código comentado acima:
(LEDS a esquerda representam semáfoto pedestre / LEDS na direita representam semáforo carros)