from machine import Pin
import time
# Входы A (4 бита)
a_pins = [Pin(2, Pin.IN, Pin.PULL_UP),
Pin(3, Pin.IN, Pin.PULL_UP),
Pin(4, Pin.IN, Pin.PULL_UP),
Pin(5, Pin.IN, Pin.PULL_UP)]
# Входы B (4 бита)
b_pins = [Pin(6, Pin.IN, Pin.PULL_UP),
Pin(7, Pin.IN, Pin.PULL_UP),
Pin(8, Pin.IN, Pin.PULL_UP),
Pin(9, Pin.IN, Pin.PULL_UP)]
# Выходы суммы (8 бит)
sum_pins = [Pin(10, Pin.OUT),
Pin(11, Pin.OUT),
Pin(12, Pin.OUT),
Pin(13, Pin.OUT),
Pin(14, Pin.OUT),
Pin(15, Pin.OUT),
Pin(16, Pin.OUT),
Pin(17, Pin.OUT)]
def read_4bit(pins):
"""Читает 4-битное число с массива пинов (pins[0] — младший бит)."""
value = 0
for i, p in enumerate(pins):
if p.value():
value |= (1 << i)
return value
def write_8bit(pins, value):
"""Выводит 8-битное число на массив пинов (pins[0] — младший бит)."""
for i, p in enumerate(pins):
bit = (value >> i) & 1
p.value(bit)
while True:
# читаем A и B
a_val = read_4bit(a_pins)
b_val = read_4bit(b_pins)
# 4-битное сложение с переносом
sum_val = a_val + b_val
# вывод на 8 светодиодов
write_8bit(sum_pins, sum_val)
time.sleep(0.05) # небольшой опросный интервал