#151Iniciante

Raspberry Pi Pico: efeito de luz policial (vermelho + azul)

Simulamos a barra de luzes de uma viatura com um Raspberry Pi Pico da forma mais simples! Os LEDs vermelho e azul acendem alternadamente (flip-flop): enquanto o vermelho está aceso, o azul fica apagado, e eles trocam de estado a cada 0,3 segundo, para sempre. O código escreve as duas etapas diretamente em um único laço while True; a velocidade é definida pela constante WAIT_MS.

4.7(3)
10 concluído
Raspberry Pi Pico: efeito de luz policial (vermelho + azul)
A versão mais simples da luz piscante de uma viatura: enquanto o LED vermelho está aceso, o azul fica apagado, e eles trocam de estado cerca de três vezes por segundo, sem parar. Você só precisa conectar dois LEDs e dois resistores ao Raspberry Pi Pico. Um show de luzes que você monta em poucos minutos, ideal para seus primeiros projetos.

Vídeo

Esquema do circuito

Raspberry Pi Pico: efeito de luz policial (vermelho + azul) - Circuit

Código-fonte

MicroPython
1# ─────────────────────────────────────────
2#   BlueGrays · bluegrays.com
3#   Raspberry Pi Pico: efeito de luz policial (vermelho + azul)
4# ─────────────────────────────────────────
5# Dois LEDs se alternam (flip-flop): o vermelho fica aceso enquanto o azul
6# está apagado, e eles trocam a cada 0.3 s. A velocidade é ajustada com
7# WAIT_MS.
8#
9# Pinos:
10#   GP11 -> LED vermelho (com resistor de 220 ohm)
11#   GP12 -> LED azul (com resistor de 220 ohm)
12#   Catodos dos LEDs -> GND
13
14from machine import Pin
15from time import sleep_ms
16
17# ============ PINOS ============
18red_led  = Pin(11, Pin.OUT)      # LED vermelho
19blue_led = Pin(12, Pin.OUT)      # LED azul
20
21WAIT_MS = 300      # Atraso da troca (ms)
22
23print("== BlueGrays · bluegrays.com ==")
24print("Polis Cakar Basit / Simple Police Alternating")
25print("Kirmizi: GP11 | Mavi: GP12")
26
27# ============ LOOP PRINCIPAL ============
28while True:
29    # Vermelho aceso, azul apagado
30    red_led.value(1)
31    blue_led.value(0)
32    print("[FLIP] KIRMIZI / RED")
33    sleep_ms(WAIT_MS)
34
35    # Azul aceso, vermelho apagado
36    red_led.value(0)
37    blue_led.value(1)
38    print("[FLIP] MAVI / BLUE")
39    sleep_ms(WAIT_MS)
40

Perguntas frequentes

Para que serve WAIT_MS?

É o tempo de espera entre as duas cores, em milissegundos. O padrão é 300 ms; 100 ms produz uma luz mais rápida e agitada, e 600 ms, uma mais tranquila. Basta alterar o valor e executar o código novamente.

Qual é a diferença entre `sleep_ms()` e `sleep()`?

sleep() recebe a duração em segundos, enquanto sleep_ms() recebe um número inteiro de milissegundos. Neste projeto, sleep_ms(300) expressa a duração com clareza; sleep(0.3) solicita o mesmo tempo nominal de espera.

O LED azul parece mais fraco que o vermelho. Por quê?

A tensão direta do LED azul (aproximadamente 3 V) é muito próxima da saída de 3,3 V do Pico; com o mesmo resistor, passa menos corrente. Você pode usar um resistor menor, como 100 Ω, para o LED azul.

Posso criar um efeito de ambulância ou caminhão de bombeiros?

Sim, você pode criar os padrões de luz de diferentes veículos de emergência alterando o número de piscadas, a duração e as cores.