Início›Módulos›Módulo Semáforo
⬤ Iniciante

🚦 Módulo Semáforo

⏱️ 25 min🧩 P0 (Vermelho) · P1 (Amarelo) · P2 (Verde)

Conteúdo

📌 Pinagem

Pino micro:bitFunçãoNotas
P0LED VermelhoOUTPUT — STOP
P1LED AmareloOUTPUT — ATENÇÃO
P2LED VerdeOUTPUT — AVANÇA
GNDMassaPartilhado
ℹ️
O módulo semáforo tem 3 LEDs integrados — vermelho, amarelo e verde — cada um controlado independentemente. Ideal para aprender sequências de estados e temporização.

Exercício — Semáforo simples

Ciclo básico: Verde → Amarelo → Vermelho com tempos reais (verde 5s, amarelo 2s, vermelho 5s).

ex1_semaforo_simples.blocks
// Função para ligar apenas um LED
function semaforo(r: number, a: number, v: number) {
    pins.digitalWritePin(DigitalPin.P0, r)
    pins.digitalWritePin(DigitalPin.P1, a)
    pins.digitalWritePin(DigitalPin.P2, v)
}

basic.forever(function() {
    semaforo(0, 0, 1)  // Verde
    basic.pause(5000)
    semaforo(0, 1, 0)  // Amarelo
    basic.pause(2000)
    semaforo(1, 0, 0)  // Vermelho
    basic.pause(5000)
})

Exercício — Semáforo com botão de peões

O verde fica activo até o botão ser premido. Depois faz o ciclo completo e volta ao verde.

ex2_semaforo_peoes.blocks
let botaoPeao = false
input.onButtonPressed(Button.A, function() { botaoPeao = true })

basic.forever(function() {
    // Fase verde (aguarda botão)
    pins.digitalWritePin(DigitalPin.P2, 1)
    while (!botaoPeao) { basic.pause(100) }
    botaoPeao = false
    
    // Amarelo
    pins.digitalWritePin(DigitalPin.P2, 0)
    pins.digitalWritePin(DigitalPin.P1, 1)
    basic.pause(2000)
    
    // Vermelho para carros + verde para peões
    pins.digitalWritePin(DigitalPin.P1, 0)
    pins.digitalWritePin(DigitalPin.P0, 1)
    basic.pause(5000)
    pins.digitalWritePin(DigitalPin.P0, 0)
})

🏆 Desafios

PR.FT4_10 · Kit A 37 · Início