← Sair
Construindo um Semáforo de Trânsito com LEDs e Arduino
Modo Bancada · Plugada

Construindo um Semáforo de Trânsito com LEDs e Arduino

O Semáforo Inteligente — Programando Cores com Arduino

🎯 O que vamos aprender
  • • Compreender como um semáforo controla o trânsito por meio de sequências programadas.
  • • Identificar os componentes básicos de um circuito eletrônico (LEDs, resistores, jumpers, protoboard).
  • • Programar um Arduino para acender LEDs vermelho, amarelo e verde respeitando tempos definidos.
  • • Simular o circuito no Tinkercad antes da montagem física.
  • • Reconhecer a importância dos semáforos para a segurança no trânsito e a cidadania.
🧰 O que vamos usar
Placa Arduino (Uno / Nano / Mega)
Placa Arduino (Uno / Nano / Mega)
Cabo USB
Cabo USB
Protoboard
Protoboard
LEDs (cores variadas)
LEDs (cores variadas)
Resistores
Resistores
Jumpers (M/M e M/F)
Jumpers (M/M e M/F)
Computador / Laptop
Computador / Laptop
Arduino IDE
Arduino IDE
Tinkercad (Circuits)
Tinkercad (Circuits)
🪜 Passo 1 de 5

Introdução / Contextualização

Inicie a aula projetando uma foto de um cruzamento de trânsito com semáforo. Pergunte: "Quem controla o semáforo? Como ele sabe a hora certa de mudar de cor?" Conduza os alunos à conclusão de que o semáforo segue uma SEQUÊNCIA programada (algoritmo) — exatamente como vamos programar nosso Arduino. Mostre o circuito montado e explique a função de cada componente (LED, resistor, protoboard, Arduino).

🪜 Passo 2 de 5

Montagem do Circuito / Hardware

Em duplas, na protoboard: 1. Conecte o LED VERMELHO ao pino digital 11 com resistor de 220Ω. 2. Conecte o LED AMARELO ao pino digital 10 com resistor de 220Ω. 3. Conecte o LED VERDE ao pino digital 9 com resistor de 220Ω. 4. Ligue todos os GND ao trilho negativo da protoboard, que vai ao GND do Arduino. 5. Conecte o Arduino ao computador via cabo USB. Antes de montar fisicamente, simule o circuito no Tinkercad para validar as ligações.

🪜 Passo 3 de 5

Programação / Codificação

Abra a Arduino IDE. Explique cada parte do código: • const int — guarda o número do pino (memória que não muda). • setup() — roda 1 vez ao ligar; serve para configurar pinos como SAÍDA. • loop() — roda PARA SEMPRE, repetindo a sequência do semáforo. • digitalWrite(pino, HIGH) — manda 5V → o LED acende. • delay(ms) — pausa em milissegundos (6000 = 6 segundos). Mostre o código completo no datashow (bloco "Código da Aula" abaixo).

🪜 Passo 4 de 5

Teste, Depuração e Ajustes

Faça upload (botão →) para o Arduino. Observe a sequência: VERMELHO (6s) → VERDE (6s) → AMARELO (2s) → repete. Desafie cada dupla a alterar APENAS os valores de delay() para simular: • Semáforo de rodovia (verde mais longo, vermelho curto). • Semáforo de escola (amarelo piscando lentamente). Se não acender, peça pra checar: polaridade do LED (perna longa = +), resistor presente, fio no GND certo.

🪜 Passo 5 de 5

Encerramento / Socialização

Cada dupla apresenta seu semáforo modificado em 1 minuto. Pergunte: • "Por que o amarelo dura menos que o verde e o vermelho?" • "O que aconteceria se trocássemos a ordem das cores?" • "Onde mais existem 'algoritmos' no nosso dia a dia?" Encerre lembrando que programar é dar instruções claras e em ordem — exatamente o que fizemos hoje.

🔌 Montagem do robô

Placa: Arduino Nano

⬇ baixar SVG
🧰 Montagem do robôPlaca: Arduino Nano · 3 componentes · 3 ligações detectadas do códigoNANO133V3AREFA0A1A2A3A4A5A6A75VRSTGNDVIN12111098765432GNDRST10Arduino NanoD9 · sinalização de pr…LED VerdeD11 · sinalização de pa…LED VermelhoD10 · sinalização de at…LED AmareloLEGENDA DOS FIOSDigital
🧰 Montagem do robôArduino Nanoplaca controladoraLED VermelhoD11LED AmareloD10LED VerdeD9
💻 O código
aula.ino
// === SEMÁFORO INTELIGENTE — Arduino ===
// Prof. Arthur de Oliveira Silva
// E.M. Paulo Renato Souza — 4º/5º ano

const int LED_VERMELHO = 11;
const int LED_AMARELO  = 10;
const int LED_VERDE    = 9;

void setup() {
  pinMode(LED_VERMELHO, OUTPUT);
  pinMode(LED_AMARELO,  OUTPUT);
  pinMode(LED_VERDE,    OUTPUT);
}

void loop() {
  // 🛑 VERMELHO — pare!
  digitalWrite(LED_VERMELHO, HIGH);
  delay(2000);
  digitalWrite(LED_VERMELHO, LOW);

  // ✅ VERDE — pode seguir
  digitalWrite(LED_VERDE, HIGH);
  delay(2000);
  digitalWrite(LED_VERDE, LOW);

  // ⚠️ AMARELO — atenção
  digitalWrite(LED_AMARELO, HIGH);
  delay(2000);
  digitalWrite(LED_AMARELO, LOW);
}
🔀 Como o programa pensa
flowchart TD A(["Início"]) --> B["Acender LED vermelho"] B --> C["Esperar 2 segundos"] C --> D["Apagar LED vermelho"] D --> E["Acender LED verde"] E --> F["Esperar 2 segundos"] F --> G["Apagar LED verde"] G --> H["Acender LED amarelo"] H --> I["Esperar 2 segundos"] I --> J["Apagar LED amarelo"] J --> A
🧱 Em blocos
quando @greenFlag for clicado
sempre
  acender LED vermelho
  esperar 2 seg
  apagar LED vermelho
  acender LED verde
  esperar 2 seg
  apagar LED verde
  acender LED amarelo
  esperar 2 seg
  apagar LED amarelo
end
🖨️ Peça 3D

Toque para ver em 3D · gire com o dedo.

aula_12_20260516033504_b0ec50c6.stl
🎥 Veja funcionando
🔗 Abrir o vídeo
Pra fechar

Você chegou ao fim! 🎉

O que foi mais difícil? O que você faria diferente? Conte pra turma!

✓ Sair