Objetivo

Criar um simulador de farol de pedestre em conjunto com um semáforo para automóveis. Quando o botão é pressionado, o sistema de luzes é alterado (vermelho) para que os carros parem e os pedestres possam atravessar a rua  em segurança (verde).

Aplicação

Para fins didáticos. Pode ser utilizado também em maquetes para ferrovia em miniatura ou em mini cidades de brinquedo.

Componentes necessários

Referência

Componente

Quantidade

 Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v Utilizar no mínimo protoboard com 830 pontos
Led Difuso 5mm Led 5mm vermelho 2  
 Led Difuso 5mm  Led 5mm verde  2 Resultado de imagem para led verde  
 Led Difuso 5mm  Led 5mm amarelo  1    
Resistor  Resistor 300 Ω  5 Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado - Cálcular Resistor
  Resistor  Resistor 10 kΩ  1    
Push Button  Push Button 6x6x5mm  1  
Arduino UNO R3 Arduino UNO  1  

Obs.: Utilizar também Cabos de ligação.

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.

Atenção:

1) Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.

2) A montagem abaixo foi realizada em um protoboard com linhas de alimentação contínuas. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - saiba mais em protoboard

Código do Projeto

 Digite o código abaixo no ambiente de desenvolvimento do Arduino. Faça a verificação e o upload.

/*******************************************************************************
*
*    Projeto 10 – Semáforo interativo
*
*******************************************************************************/

int carRed = 13; // estabelece o semáforo para carros
int carYellow = 12;
int carGreen = 11;
int pedRed = 10; // estabelece o semáforo para pedestres
int pedGreen = 9;
int button = 2; // pino do botão
int crossTime = 5000; // tempo para que os pedestres atravessem (5 segundos)
unsigned long changeTime; // tempo desde que o botão foi pressionado

//******************************************************************************

void setup() {
pinMode(carRed, OUTPUT);
pinMode(carYellow, OUTPUT);
pinMode(carGreen, OUTPUT);
pinMode(pedRed, OUTPUT);
pinMode(pedGreen, OUTPUT);
pinMode(button, INPUT); // botão no pino 2
// acende a luz verde (carros) e vermelha (pedestre)
digitalWrite(carGreen, HIGH);
digitalWrite(pedRed, HIGH);
}

//******************************************************************************

void loop() {
int state = digitalRead(button);
/* verifica se o botão foi pressionado e se transcorreram 5 segundos desde a última vez que
isso ocorreu */
if (state == HIGH && (millis() - changeTime) > 5000) {

// Chama a função para alterar as luzes
changeLights();
}
}
void changeLights() {
digitalWrite(carGreen, LOW); // apaga o verde
digitalWrite(carYellow, HIGH); // acende o amarelo
delay(2000); // espera 2 segundos
digitalWrite(carYellow, LOW); // apaga o amarelo
digitalWrite(carRed, HIGH); // acende o vermelho
delay(1000); // espera 1 segundo, por segurança
digitalWrite(pedRed, LOW); // apaga o vermelho dos pedestres
digitalWrite(pedGreen, HIGH); // acende o verde dos pedestres
delay(crossTime); // espera por um intervalo de tempo predefinido (variável = 5seg)
// pisca o verde dos pedestres
for (int x=0; x<10; x++) {
digitalWrite(pedGreen, HIGH);
delay(250);
digitalWrite(pedGreen, LOW);
delay(250);
}
// acende o vermelho dos pedestres
digitalWrite(pedRed, HIGH);
delay(500);
digitalWrite(carRed, LOW); // apaga o vermelho
digitalWrite(carGreen, HIGH); // acende o verde
// registra o tempo desde a última alteração no semáforo
changeTime = millis();
// depois retorna para o loop principal do programa
}

Vídeo

 

Como o projeto deve funcionar

1. Quando você executar o programa, ele iniciará com o semáforo no verde, para permitir que os carros passem, e a luz para pedestres no vermelho.

2. Quando o botão é pressionado, o programa irá verificar se ao menos ocorreu 5 segundos desde a última vez que o semáforo mudou (para permitir que o trânsito flua). Se afirmativo, será executado a função changeLights(), onde o semáforo para carros vai do verde para o amarelo e depois para o vermelho, e então o semáforo para pedestres vai para o verde.

3. Depois de um intervalo de tempo, definido pela variável crossTime (tempo suficiente para os pedestres atravessarem - 5 segundos no nosso exemplo), a luz verde para pedestre deverá piscar para avisar aos pedestres que devem atravessar rapidamente antes que o semáforo feche.

4. Então, a luz vermelha do semáforo do pedestre ascende e a luz dos carros vai do vermelho para o verde, permitindo novamente o fluxo do tráfego.

Veja a simulação no link --> Projeto 10 - simulação

 

Compartilhe:

Doações

Contribua pra manter o site online :)

Inscreva-se no canal Squids

Você está preparado?

Imagem 1

Squids Arduino News

CB05 - Circuitos eletrônicos básicos Temporizador com CI 555 (modo monoestável) Objetivo Criar um circuito para ser utilizado como um temporizador para componentes eletrônicos, onde utilizamos ...

Desafio 38 - Projeto 52 Relógio Digital RTC com ajuste de horas do alarme Com base no projeto 52 resolva os seguintes desafios: 1. Acrescente mais um botão (push button) para ligar e desliga...

Básico - Projeto 52 Relógio Digital com despertador - LCD + I2C + RTC DS3231 Objetivo Neste projeto mostraremos como utilizar o o módulo RTC DS3231 para criar um relógio digital  com monitorame...

Desafio 37 - Projeto 51 Relógio Digital RTC com botão seletor Com base no projeto 50 resolva os seguintes desafios: 1. Acrescente um botão (push button) para que quando pressionado exiba a d...

Básico - Projeto 51 Relógio Digital com Temperatura - LCD + I2C + RTC DS3231 Objetivo Neste projeto vamos mostrar como utilizar o sensor de temperatura do módulo RTC DS3231 e criar um relógio d...

Desafio 36 - Projeto 50 Relógio Digital RTC com ajuste de horas Com base no projeto 50 resolva os seguintes desafios: 1. Acrescente um botão (push button) para ligar e desligar a luz de fund...

Básico - Projeto 50 Relógio Digital com display LCD + adaptador I2C + RTC DS3231 Objetivo Neste projeto vamos criar um relógio digital Arduino utilizando um display LCD, um módulo I2C e um módu...

Desafio 35 - Projeto 49 Relógio Digital com saudação Com base no projeto 49 resolva os seguintes desafios: 1. Altere o scketch do projeto, acrescentando as seguintes saudações: Entre 5h:0...

Coletânea de bibliotecas para módulos

Coletânea de bibliotecas para módulos Arduino Criamos abaixo uma tabela com as principais bibliotecas para módulos utilizadas em nossos projetos para Arduino. Para instalar as bibliotecas diretamente...

Básico - Projeto 49 Relógio Digital com display LCD + I2C Objetivo Neste projeto vamos criar um relógio digital Arduino utilizando apenas um display LCD, um módulo I2C e 2 botões para controle ...

Outros artigos

Mais: Circuitos básicos Desafios Projetos Básicos Bibliotecas Jogos

Topo