from machine import Pin
import time
# --- Назначение пинов ---
# Даём пинам понятные имена: если светодиод придётся перенести
# на другую ножку Pico W, значение меняется только в одном месте.
RED_PIN = 16
YELLOW_PIN = 17
GREEN_PIN = 18
red = Pin(RED_PIN, Pin.OUT)
yellow = Pin(YELLOW_PIN, Pin.OUT)
green = Pin(GREEN_PIN, Pin.OUT)
# --- Настройки времени (в секундах) ---
RED_TIME = 4 # сколько горит красный
YELLOW_TIME = 2 # сколько горит жёлтый
GREEN_TIME = 4 # сколько горит ровный зелёный
BLINK_PERIOD = 0.5 # длительность одной "вспышки" мигающего зелёного
BLINK_COUNT = 6 # сколько раз мигнёт зелёный перед жёлтым
def all_off():
"""Гасим все три светодиода перед началом новой фазы."""
red.value(0)
yellow.value(0)
green.value(0)
def red_phase():
"""Фаза 1: горит красный."""
all_off()
red.value(1)
time.sleep(RED_TIME)
def yellow_phase():
"""Фаза (жёлтый): используется и после красного, и перед красным."""
all_off()
yellow.value(1)
time.sleep(YELLOW_TIME)
def green_phase():
"""Фаза: горит ровный (немигающий) зелёный."""
all_off()
green.value(1)
time.sleep(GREEN_TIME)
def green_blink_phase():
"""Фаза: зелёный мигает, предупреждая о скором переключении."""
all_off()
for _ in range(BLINK_COUNT):
green.value(1)
time.sleep(BLINK_PERIOD)
green.value(0)
time.sleep(BLINK_PERIOD)
print("Старт модели светофора на Raspberry Pi Pico W")
while True:
red_phase() # красный
yellow_phase() # жёлтый
green_phase() # зелёный (ровный)
green_blink_phase() # зелёный (мигающий)
yellow_phase() # жёлтый
# далее цикл повторяется: снова красный
Loading
pi-pico-w
pi-pico-w