Como montar um sistema de semáforo com Arduino para projeto escolar ou hobby
Vou explicar direto o que eu fiz quando precisei montar uma atividade de semáforo para uma feira de ciências. O problema não era só ligar LEDs e torcer para funcionar. Eu gastei duas tardes tentando entender por que os LEDs piscavam de jeito estranho quando eu mudava o tempo do verde. A solução acabou sendo mais simples do que eu imaginava, mas demorei para achar.
O que é atividade semaforo e para quem serve
O termo atividade semaforo aparece em contextos bem diferentes. Pode ser um exercício escolar sobre trânsito e segurança, um projeto de eletrônica com microcontroladores, ou até uma simulação para maquetes e trens elétricas. O essencial é entender o básico: um semáforo tem três estados principais (vermelho, amarelo, verde) e precisa alterná-los de forma previsível para não causar confusão. Se você está fazendo isso para escola, o foco costuma ser entender lógica de programação e circuito básico. Se for para automação residencial ou hobby avançado, aí entra questão de sensores, integração com outros dispositivos e confiabilidade. Vou cobrir o caminho do mais simples ao mais prático, sem enrolação.
Componentes necessários e montagem do circuito
Para um semáforo básico com Arduino, você precisa de: uma placa Arduino Uno ou similar, três LEDs (vermelho, amarelo, verde), três resistores de 220 ohms, jumpers e uma protoboard. Se quiser algo mais realista, adicione um botão para pedestre e um sensor infravermelho para detectar presença. O circuito é direto. Cada LED vai ligado a um pino digital do Arduino através de seu resistor. O catodo (perna curta) de cada LED conecta ao GND. Eu sempre monto primeiro o esquema no papel antes de colocar na protoboard porque esquecimento de resistor é o erro mais comum em iniciantes, e LED queimado acontece rápido.
Uma coisa que ninguém fala: use resistores de 220 ohms mesmo se a calculadora online sugerir valores menores. Eu já vi gente usar 100 ohms e o LED ficar brilhante demais e esquentar. Isso reduz a vida útil do componente e pode danificar o pino do Arduino com o tempo.
Código básico e lógica de funcionamento
O código para um semáforo simples tem quatro fases: verde fixo, amarelo fixo, vermelho fixo e vermelho com amarelo juntos (em alguns países). A lógica é um loop que muda os estados a cada intervalo definido.
👉 Clique no botão abaixo para saber mais sobre o assunto!
const int pinoVermelho = 13;
const int pinoAmarelo = 12;
const int pinoVerde = 11;
void setup() {
pinMode(pinoVermelho, OUTPUT);
pinMode(pinoAmarelo, OUTPUT);
pinMode(pinoVerde, OUTPUT);
}
void loop() {
digitalWrite(pinoVerde, HIGH);
delay(5000);
digitalWrite(pinoVerde, LOW);
digitalWrite(pinoAmarelo, HIGH);
delay(2000);
digitalWrite(pinoAmarelo, LOW);
digitalWrite(pinoVermelho, HIGH);
delay(5000);
digitalWrite(pinoVermelho, LOW);
}
Esse código funciona, mas tem um problema sério: usa delay(), que trava o Arduino. Se você adicionar um botão de pedestre depois, ele não vai responder enquanto o delay estiver rodando. A solução é usar millis() para criar temporizadores não bloqueantes. Eu migrei meu projeto para essa abordagem e o resultado foi muito mais fluido.
Problema real que eu encontrei e como resolvi
Na minha atividade semaforo, o semáforo parecia funcionar direito no simulador, mas quando montei no físico, os LEDs ficavam oscilando. Descobri que o cabo de alimentação da protoboard estava com contato ruim na conexão com oUSB do computador. O problema era intermitente e difícil de reproduzir em simulação. A solução foi usar uma fonte externa de 9V com regulador LM7805,do USB. Isso estabilizou tudo. Também descobri que o Arduino Uno aguenta até 200mA por pino e 800mA no total. Três LEDs com resistores de 220 ohms consomem cerca de 14mA cada, então estava dentro dos limites, mas se você adicionar mais componentes, precisa calcular isso com antecedência.
Erros comuns e como evitar
Erros que eu vi acontecer repetidamente: inverter o polaridade do LED (funciona metade do tempo e gera dúvida), esquecer o resistor (LED queima em segundos), usar pinos analógicos como digitais sem configurar (o código compila mas não funciona), e não testar o circuito antes de soldar nada (solda errada é dor de cabeça permanente). Outro erro clássico é confiar no delay() para timing preciso. O Arduino UNO tem clock de 16MHz, mas o delay() não é exato. Se você precisa de sincronia com outros dispositivos, use timers hardware ou um cristal externo. Para feira de ciências, o delay basta. Para projeto profissional, não.
Limitações e quando usar alternativa
O semáforo com Arduino é excelente para aprendizado, mas tem limitações sérias para uso real. Não tem redundância: se o Arduino travar, o semáforo para. Sistemas profissionais usam PLCs com memória backup e monitoramento remoto. Se você precisa instalar algo que vaivai funcionar 24/7, considere Controlador Lógico Programável (CLP) ou sistema embarcado com watchdog timer. Também vale lembrar que semáforos reais precisam seguir normas técnicas, como a NBR 13572 no Brasil, que define tempos mínimos, sequência de cores e integração com sistemas de transporte. Projeto escolar não precisa seguir isso, mas se o objetivo é simular fidelidade, pesquise os padrões antes de montar.
Dicas práticas para atividade semaforo funcionar sem dor de cabeça
Teste cada LED individualmente antes de montar o circuito completo. Anote os pinos usados em uma etiqueta colada na protoboard. Use jumpers coloridos para facilitar identificação. E, acima de tudo, tenha paciência com debugging. Eu perdi uma tarde inteira procurando erro que era um jumper frouxo. Conectar, desconectar, testar. É assim que eletrônica funciona na prática. Se quiser algo mais elaborado, pesquise por "semáforo com sensor de presença" ou "semáforo para maquete ferroviária". A comunidade brasileira tem muitos tutoriais no YouTube e no Clube do Hardware que valem a pena. Aproveite para contribuir também: quando resolver um problema, Documente e compartilhe. É assim que o conhecimento cresce.