TrashNotes

2025-02-12 20:45:05
##### CircuitPython 8.2.10 ################
##### 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)  # Пауза між вимиканням та вмиканням
← Previous Next →
Back to list