#149Новичок

Два попеременно мигающих светодиода на Pico (узор мигалки)

Следующий шаг после одного светодиода на Pico: два светодиода мигают попеременно по классическому узору мигалки. Когда один гаснет, другой загорается — самый простой пример согласованной работы нескольких GPIO. В этом проекте два светодиода разных цветов (красный на GP14, зелёный на GP13) меняются состояниями каждые 500ms. Метод MicroPython Pin.toggle() делает код коротким и понятным. Та же логика лежит в основе светофоров, полицейских мигалок, бегущих огней и многих светодиодных анимаций.

5.0(2)
19 собрано
Два попеременно мигающих светодиода на Pico (узор мигалки)
Два светодиода мигают по очереди: когда один загорается, другой гаснет, совсем как предупреждающие огни на железнодорожном переезде. Raspberry Pi Pico меняет красный и зелёный светодиоды каждые полсекунды. Это первый шаг к управлению несколькими огнями сразу, и на нём строятся проекты вроде полицейской мигалки и светофора.

Видео

Схема

Два попеременно мигающих светодиода на Pico (узор мигалки) - Circuit

Исходный код

MicroPython
1# ─────────────────────────────────────────
2#   BlueGrays · bluegrays.com
3#   Два попеременно мигающих светодиода на Pico (узор мигалки)
4# ─────────────────────────────────────────
5# Два светодиода мигают поочерёдно каждые 0,5 с (флип-флоп): один горит,
6# пока другой не горит. Pin.toggle() делает код коротким.
7#
8# Пины:
9#   GP14 -> Красный светодиод (с резистором 220 ohm)
10#   GP13 -> Зелёный светодиод (с резистором 220 ohm)
11#   Катоды светодиодов -> GND
12
13from machine import Pin
14from time import sleep
15
16# ============ ПИНЫ ============
17led1 = Pin(14, Pin.OUT)         # Красный светодиод
18led2 = Pin(13, Pin.OUT)         # Зелёный светодиод
19
20# ============ ИНИЦИАЛИЗАЦИЯ ============
21# Начать с противоположных состояний
22led1.value(1)
23led2.value(0)
24
25print("== BlueGrays: 2 LED Alternatif ==")
26print("LED1 (Kirmizi): GP14  |  LED2 (Yesil): GP13")
27
28# ============ ГЛАВНЫЙ ЦИКЛ ============
29while True:
30    # Переключить оба светодиода
31    led1.toggle()
32    led2.toggle()
33    sleep(0.5)                  # Задержка 500 мс
34

Частые вопросы

Что делает метод `toggle()`?

Он переворачивает текущее состояние пина: если включён — выключает, если выключен — включает. Если в начале один задан включённым, а другой выключенным, два светодиода при каждом toggle меняются местами.

Как изменить скорость мигания?

Измени значение в `sleep(0.5)` в конце кода; `sleep(0.2)` даёт более быстрые переходы, а `sleep(1)` — более медленные. Чтобы использовать `sleep_ms()`, добавь также `from time import sleep_ms`.

Что делать, если в начале оба светодиода горят одновременно?

Перед циклом задай одному светодиоду `on()`, а другому `off()`. Иначе оба стартуют в одном состоянии и при `toggle` будут мигать вместе.

Можно ли попробовать этот проект в Wokwi?

Да, Wokwi поддерживает Raspberry Pi Pico и MicroPython. Можно добавить компоненты, подключить их к тем же пинам и проверить код без настоящего железа.