Básico - Projeto 10

Semáforo interativo

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.

1.1. Portanto, faça a conexão do Arduino no terminal positivo (anodo) e o GND no terminal negativo (catodo) do led.

1.2. Para evitar danos ao led é necessário a inclusão de um resistor no circuito. Como o resistor é um limitador da corrente elétrica, ele poderá estar conectado no anodo (terminal maior) ou no catodo (terminal menor) do led, tanto faz.

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?

Squids Arduino News

Desafio 78 - Projeto I05 Controlando 2 motores - juntos e individualmente Com base no projeto I06 - Controlando um motor DC com L293D (Ponte H) e Arduino resolva os seguintes desafios: 1. A...

Básico - Projeto 91 Exibindo imagens bitmap em um Oled SSD1306 - bibliotecas Adafruit Objetivo Neste projeto vamos mostrar como exibir imagens bitmap em um display OLED SSD1306 com Arduino. Uti...

Intermediário - Projeto 06 Controle de velocidade e sentido de rotação de um motor DC Objetivo Neste tutorial vamos mostrar como criar um circuito para controlar a velocidade e o sentido de ro...

Desafio 77 - Projetos hub005 e hub007 Acessar leds com comunicação serial e manipulação direta de portas Com base nos projetos Hub 005 - Acender leds por comunicação serial - Arduino  e Hub 007...

Básico - Hub 007 Leds são acionados pelo teclado do computador   Sugerido por: Vinicius Medeiros Objetivo O projeto é composto por 3 leds, um verde, um amarelo e um vermelho. Ao digitar a ...

Outros artigos

Mais: Desafios Projetos Básicos Projetos Intermediários Básico

Topo