#151Iniciante

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

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, GP11 + GP12)
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.

Esquema do circuito

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

Código-fonte

MicroPython
1# ─────────────────────────────────────────
2#   BlueGrays · bluegrays.com
3#   Raspberry Pi Pico Police Strobe Light Effect (Red + Blue, GP11 + GP12)
4# ─────────────────────────────────────────
5# Two LEDs alternate (flip-flop): red is on while blue is off, and they
6# swap every 0.3 s. The speed is set with WAIT_MS.
7#
8# Pins:
9#   GP11 -> Red LED (with a 220 ohm resistor)
10#   GP12 -> Blue LED (with a 220 ohm resistor)
11#   LED katotlari -> LED cathodes -> GND
12
13from machine import Pin
14from time import sleep_ms
15
16# ============ PIN / PIN ============
17red_led  = Pin(11, Pin.OUT)      # Red LED
18blue_led = Pin(12, Pin.OUT)      # Blue LED
19
20WAIT_MS = 300      # Switch delay (ms)
21
22print("== BlueGrays · bluegrays.com ==")
23print("Polis Cakar Basit / Simple Police Alternating")
24print("Kirmizi: GP11 | Mavi: GP12")
25
26# ============ MAIN LOOP ============
27while True:
28    # Red on, blue off
29    red_led.value(1)
30    blue_led.value(0)
31    print("[FLIP] KIRMIZI / RED")
32    sleep_ms(WAIT_MS)
33
34    # Blue on, red off
35    red_led.value(0)
36    blue_led.value(1)
37    print("[FLIP] MAVI / BLUE")
38    sleep_ms(WAIT_MS)
39

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.