https://circuitpython.org/downloads #

###########################################

Імпорт необхідних бібліотек

import board
import digitalio
import pwmio
import time

Список світлодіодів, підключених до відповідних цифрових контактів

leds = [pwmio.PWMOut(getattr(board, f"GP{n}")) for n in range(8)]

Максимальне значення duty_cycle

maxpwm = 65535

Функція для поступового ввімкнення світлодіода

def encender_led(led_index, speed):
duty = 1 # Початкове значення duty_cycle
for i in range(maxpwm):
duty += speed # Збільшення duty_cycle на величину speed
if duty < 0:
duty = 0 # Обмеження duty_cycle мінімальним значенням
elif duty > maxpwm:
duty = maxpwm # Обмеження duty_cycle максимальним значенням
break # Вихід із циклу, якщо duty_cycle досягнуто максимуму
leds[led_index].duty_cycle = duty # Встановлення duty_cycle для світлодіода
time.sleep(0.00001) # Пауза для плавного переходу

Функція для поступового вимкнення світлодіода

def apagar_led(led_index, speed):
duty = maxpwm # Початкове значення duty_cycle (максимальна яскравість)
for i in range(maxpwm):
duty -= speed # Зменшення duty_cycle на величину speed
if duty < 0:
duty = 0 # Обмеження duty_cycle мінімальним значенням
break # Вихід із циклу, якщо duty_cycle досягнуто мінімуму
elif duty > maxpwm:
duty = maxpwm # Обмеження duty_cycle максимальним значенням
leds[led_index].duty_cycle = duty # Встановлення duty_cycle для світлодіода
time.sleep(0.00001) # Пауза для плавного переходу

Головний цикл програми (безкінечний)

while True:

Ввімкнення світлодіодів по черзі з певною швидкістю

for i in range(len(leds)):
encender_led(i, 70)

time.sleep(0.5) # Пауза між вмиканням та вимиканням

Вимкнення світлодіодів по черзі з певною швидкістю

for i in range(len(leds) - 1, -1, -1): # розкоментувати для зворотного порядку

for i in range(len(leds)):
apagar_led(i, 70)

time.sleep(0.5) # Пауза між вимиканням та вмиканням

[file-name 000008_2025-02-12_20-45-05.txt]