import board
import digitalio
import analogio
import time
# Настройка пинов для 74HC595
latch_pin = digitalio.DigitalInOut(board.GP3) # Latch Pin
clock_pin = digitalio.DigitalInOut(board.GP5) # Clock Pin
data_pin = digitalio.DigitalInOut(board.GP2) # Data Pin
# Настройка пинов как выходы
latch_pin.direction = digitalio.Direction.OUTPUT
clock_pin.direction = digitalio.Direction.OUTPUT
data_pin.direction = digitalio.Direction.OUTPUT
# Настройка ADC на GP26 (пин ADC0)
potentiometer = analogio.AnalogIn(board.GP26)
# Функция для отправки данных в 74HC595
def shift_out(value):
latch_pin.value = False
for i in range(8):
data_pin.value = (value >> i) & 1 # Установка данных
clock_pin.value = True # Подаем сигнал на тактирование
time.sleep(0.01) # Небольшая задержка
clock_pin.value = False # Завершаем тактирование
latch_pin.value = True # Выводим данные в сдвиговый регистр
while True:
# Чтение значения с потенциометра (диапазон от 0 до 65535)
pot_value = potentiometer.value
# Преобразуем значение в диапазон от 0 до 255 для управления светодиодами
led_level = int((pot_value / 65535) * 8) # Мы используем 8 светодиодов
# Строим битовую маску для включения светодиодов по порядку
led_mask = (1 << led_level) - 1 # Включаем светодиоды по порядку
# Отправляем маску в 74HC595 для управления светодиодами
shift_out(led_mask)
# Задержка для стабильной работы
time.sleep(0.1)