| Pino micro:bit | Função | Notas |
|---|---|---|
| P0 | LED Vermelho | OUTPUT — STOP |
| P1 | LED Amarelo | OUTPUT — ATENÇÃO |
| P2 | LED Verde | OUTPUT — AVANÇA |
| GND | Massa | Partilhado |
Ciclo básico: Verde → Amarelo → Vermelho com tempos reais (verde 5s, amarelo 2s, vermelho 5s).
// 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)
})O verde fica activo até o botão ser premido. Depois faz o ciclo completo e volta ao verde.
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)
})