import board
import digitalio
import time
import rotaryio
# Encoders
encoder_input = rotaryio.IncrementalEncoder(board.GP2, board.GP3)
encoder_output = rotaryio.IncrementalEncoder(board.GP4, board.GP5)
last_input = encoder_input.position
last_output = encoder_output.position
input_val = 1
output_val = 1
# LEDs para entradas (GP6–GP9)
input_leds = []
for pin in [board.GP6, board.GP7, board.GP8, board.GP9]:
led = digitalio.DigitalInOut(pin)
led.direction = digitalio.Direction.OUTPUT
input_leds.append(led)
# LEDs para salidas (GP10–GP13)
output_leds = []
for pin in [board.GP10, board.GP11, board.GP12, board.GP13]:
led = digitalio.DigitalInOut(pin)
led.direction = digitalio.Direction.OUTPUT
output_leds.append(led)
def update_leds(led_list, active_index):
for i, led in enumerate(led_list):
led.value = (i == active_index)
update_leds(input_leds, input_val - 1)
update_leds(output_leds, output_val - 1)
while True:
current_input = encoder_input.position
current_output = encoder_output.position
if current_input != last_input:
delta = current_input - last_input
input_val = (input_val - 1 + delta) % 4 + 1
update_leds(input_leds, input_val - 1)
last_input = current_input
if current_output != last_output:
delta = current_output - last_output
output_val = (output_val - 1 + delta) % 4 + 1
update_leds(output_leds, output_val - 1)
last_output = current_output
time.sleep(0.05)