projeto

Semáforo Rodoviário com Arduino

Semáforo Rodoviário com Arduino

🚦 Semáforo Rodoviário com Arduino Uno: Automação e Controle de Luzes

Semáforo rodoviário controlado com Arduino Uno - JN Portfolio

Aprenda como construir uma simulação de semáforo rodoviário utilizando Arduino Uno, um módulo de semáforo e cabos jumper.

🚦 Introdução

Os semáforos estão presentes diariamente nas nossas cidades e possuem uma função importante na organização do trânsito. Através de uma sequência de sinais luminosos, eles ajudam a controlar a circulação de veículos e a organizar diferentes momentos do tráfego.

Mas como podemos reproduzir esse funcionamento utilizando eletrónica e programação? Foi a partir dessa ideia que surgiu este projeto: um semáforo rodoviário controlado por Arduino Uno.

O projeto utiliza uma montagem simples, formada por um Arduino Uno, um módulo de semáforo e cabos jumper. O Arduino executa um programa responsável por controlar as diferentes luzes do módulo através das suas portas digitais.

A proposta não é construir um semáforo real para utilização em vias públicas, mas sim criar uma simulação didática que permita compreender como um sistema automático pode executar uma sequência de comandos sem intervenção constante do utilizador.

Este é um projeto especialmente interessante para quem está começando a estudar Arduino, eletrónica, programação e automação, porque permite visualizar imediatamente o resultado do código no hardware.

🎯 Objetivo do Projeto

O principal objetivo deste projeto é desenvolver uma pequena simulação de um semáforo rodoviário utilizando um Arduino Uno.

Através da programação, o Arduino controla as luzes do módulo de semáforo e determina a sequência em que cada uma deve ser ativada.

Além de construir o circuito, o projeto permite praticar conceitos fundamentais como:

  • Controle de saídas digitais;
  • Utilização de variáveis;
  • Estruturas de programação;
  • Temporização;
  • Controle de LEDs;
  • Integração entre software e hardware;
  • Automação de uma sequência de tarefas.

🧰 Materiais Utilizados

Uma das características deste projeto é a sua simplicidade. Foram utilizados apenas alguns componentes básicos para criar a demonstração.

  • 1 × Arduino Uno — responsável pelo processamento e controle do projeto.
  • 1 × Módulo Semáforo — utilizado para representar as luzes do semáforo.
  • Cabos Jumper — utilizados para realizar as conexões entre os componentes.

🔵 Arduino Uno

Arduino Uno utilizado no projeto do semáforo

O Arduino Uno é o principal elemento de controle deste projeto. Ele recebe o programa desenvolvido e executa as instruções continuamente.

Neste projeto, as portas digitais do Arduino são utilizadas para enviar sinais ao módulo de semáforo. Dependendo do estado definido pelo programa, determinada saída pode permanecer ligada ou desligada.

Dessa forma, o Arduino funciona como o cérebro do sistema, transformando as instruções escritas no código em ações físicas no circuito.

🚦 Módulo Semáforo

Módulo semáforo utilizado no projeto com Arduino Uno

O módulo semáforo é responsável pela representação visual do sistema. As suas luzes permitem observar diretamente as instruções que estão sendo executadas pelo Arduino.

Cada luz representa uma etapa da sequência programada. Assim, podemos acompanhar visualmente a mudança entre os diferentes estados do sistema.

🔌 Cabos Jumper

Cabos jumper utilizados para conectar o Arduino ao módulo semáforo

Os cabos jumper são utilizados para estabelecer as conexões entre o Arduino Uno e o módulo de semáforo.

Eles permitem que os sinais das portas utilizadas no Arduino cheguem às entradas correspondentes do módulo.

⚙️ Como funciona o projeto?

O funcionamento do sistema é baseado em uma sequência de estados. O Arduino executa o código dentro da função loop() continuamente.

Em cada etapa, determinadas saídas digitais são colocadas em HIGH ou LOW. Isso permite controlar quais luzes permanecem acesas e quais permanecem apagadas.

Depois de ativar uma determinada luz, o programa utiliza a função delay() para aguardar durante um período definido. Depois dessa espera, o Arduino altera novamente o estado das saídas e passa para a próxima etapa.

Como a função loop() é executada continuamente, quando a sequência termina ela começa novamente.

🔄 Sequência do Semáforo

A lógica utilizada no exemplo pode ser representada da seguinte maneira:

  1. Vermelho: o sistema mantém a luz vermelha ativada durante o tempo definido.
  2. Amarelo: depois da primeira etapa, o programa muda o estado das saídas e ativa a luz amarela.
  3. Verde: posteriormente, a luz verde é ativada.
  4. Repetição: depois de terminar a sequência, o processo volta ao início.

💻 Código Arduino

Abaixo está um exemplo de código para controlar as três luzes do módulo de semáforo através das portas digitais do Arduino.

int vermelho = 8;
int amarelo = 9;
int verde = 10;

void setup() {

    pinMode(vermelho, OUTPUT);
    pinMode(amarelo, OUTPUT);
    pinMode(verde, OUTPUT);

}

void loop() {

    // Luz vermelha

    digitalWrite(vermelho, HIGH);
    digitalWrite(amarelo, LOW);
    digitalWrite(verde, LOW);

    delay(5000);


    // Luz amarela

    digitalWrite(vermelho, LOW);
    digitalWrite(amarelo, HIGH);
    digitalWrite(verde, LOW);

    delay(2000);


    // Luz verde

    digitalWrite(vermelho, LOW);
    digitalWrite(amarelo, LOW);
    digitalWrite(verde, HIGH);

    delay(5000);

}

Nota: os pinos 8, 9 e 10 utilizados acima são um exemplo. Caso a montagem apresentada no teu vídeo utilize outros pinos, é importante alterar esses valores no código.

🧠 Entendendo o código

Variáveis

As três primeiras linhas criam variáveis para representar as portas utilizadas pelas luzes do semáforo:

  • vermelho → porta digital 8;
  • amarelo → porta digital 9;
  • verde → porta digital 10.

Função setup()

A função setup() é executada uma vez quando o Arduino inicia. Nela, as portas são configuradas como saídas através da função pinMode().

Função loop()

A função loop() é executada repetidamente enquanto o Arduino estiver ligado. É nela que colocamos a sequência de funcionamento do semáforo.

digitalWrite()

A função digitalWrite() altera o estado de uma saída digital. Quando utilizamos HIGH, a saída é ativada; quando utilizamos LOW, ela é desativada.

delay()

A função delay() cria uma pausa no programa. Por exemplo, delay(5000) representa uma espera de 5000 milissegundos, ou seja, 5 segundos.

📚 O que este projeto ensina?

Embora seja uma montagem pequena, o projeto apresenta vários conceitos importantes para quem está começando com Arduino.

  • Como configurar portas digitais;
  • Como controlar LEDs através de programação;
  • Como criar uma sequência automática;
  • Como utilizar variáveis;
  • Como utilizar setup() e loop();
  • Como utilizar pinMode();
  • Como utilizar digitalWrite();
  • Como controlar intervalos de tempo com delay();
  • Como transformar um programa em ações físicas no hardware.

📖 Quer saber mais sobre Arduino?

Se estás começando agora no mundo do Arduino e queres conhecer melhor essa plataforma, recomendamos também a leitura do nosso artigo dedicado ao Arduino.

Nesse conteúdo podes encontrar informações para compreender melhor o que é Arduino, conhecer diferentes placas e descobrir algumas das possibilidades oferecidas por essa plataforma de prototipagem eletrónica.

Antes de avançar para projetos mais complexos, conhecer os fundamentos do Arduino pode facilitar bastante o aprendizado.

👉 Acesse o artigo completo sobre Arduino no JN Portfolio

🎥 Vídeo Tutorial Completo

Queres ver a montagem e o projeto funcionando na prática? Assiste ao vídeo tutorial completo abaixo.

▶️ Assistir diretamente no YouTube

🚀 Possíveis melhorias

Este proj