from machine import Pin
import time
# Define os números dos pinos para os segmentos do LED
led_pins = [16, 17, 18, 19, 20, 21, 22]
segments = [Pin(pin, Pin.OUT) for pin in led_pins] # Inicializa cada pino de segmento como saída
# Dicionário que define o estado de cada segmento para os dígitos de 0 a 9
digits = {
0: [1, 1, 1, 1, 1, 1, 0],
1: [0, 1, 1, 0, 0, 0, 0],
2: [1, 1, 0, 1, 1, 0, 1],
3: [1, 1, 1, 1, 0, 0, 1],
4: [0, 1, 1, 0, 0, 1, 1],
5: [1, 0, 1, 1, 0, 1, 1],
6: [1, 0, 1, 1, 1, 1, 1],
7: [1, 1, 1, 0, 0, 0, 0],
8: [1, 1, 1, 1, 1, 1, 1],
9: [1, 1, 1, 1, 0, 1, 1]
}
# Configura os números dos pinos para os botões de incremento e decremento
up_button = Pin(15, Pin.IN, Pin.PULL_UP) # Botão para incrementar
down_button = Pin(14, Pin.IN, Pin.PULL_UP) # Botão para decrementar
# Função para atualizar os LEDs com base no valor atual
def display_value(value):
for segment, state in zip(segments, digits[value]):
segment.value(state) # Define o estado de cada segmento
# Variável global para armazenar o valor atual
count = 0
display_value(count) # Inicializa o display para mostrar 0
# Manipulador de interrupção para incrementar o valor
def increment_handler(pin):
global count
count = (count + 1) % 10 # Incrementa e mantém o valor entre 0 e 9
display_value(count) # Atualiza o display com o novo valor
# Manipulador de interrupção para decrementar o valor
def decrement_handler(pin):
global count
if count > 0:
count = (count - 1) % 10 # Decrementa e mantém o valor entre 0 e 9
display_value(count) # Atualiza o display com o novo valor
# Configura interrupções para os botões
up_button.irq(trigger=Pin.IRQ_FALLING, handler=increment_handler) # Chama increment_handler ao pressionar o botão "para cima"
down_button.irq(trigger=Pin.IRQ_FALLING, handler=decrement_handler) # Chama decrement_handler ao pressionar o botão "para baixo"
# Loop principal para manter o programa em execução
while True:
pass # Mantém o loop ativo, aguardando interrupções