from machine import Pin, Timer
from time import sleep_us
# Inicijalizacija pinova
output_pin = Pin(18, Pin.OUT)
enable_pin = Pin(LED_ACT, Pin.OUT) # Prilagodite pin prema vašem mikrokontroleru
input_pin = Pin(9, Pin.IN, Pin.PULL_UP)
led_display_pins = [Pin(i, Pin.OUT) for i in range(8)]
count_value = 0
debounce_counter = 0
last_state = False
def update_led_display(value):
"""Ažurira LED prikaz na osnovu count_value"""
j = value % 10
x = ((value // 10) % 10) << 4
display_value = x + j
for i in range(8):
led_display_pins[i].value((display_value >> i) & 1)
def check_input(pin):
"""Funkcija koja se poziva na prekid za debouncing"""
global last_state, debounce_counter, count_value
current_state = pin.value() == 0 # Aktivno nisko stanje
if debounce_counter == 0 and last_state != current_state:
debounce_counter = 1
last_state = current_state
elif debounce_counter > 0 and debounce_counter < 10:
if last_state == current_state:
debounce_counter += 1
else:
debounce_counter = 0
elif debounce_counter == 10:
if last_state == current_state:
count_value += 1
debounce_counter = 0
def main():
global count_value
enable_pin.value(0)
# Postavljanje prekida za debouncing
input_pin.irq(trigger=Pin.IRQ_FALLING, handler=check_input)
while True:
output_pin.value(not output_pin.value())
update_led_display(count_value)
sleep_us(2000 // 2)
if count_value % 2 == 0:
output_pin.value(1)
sleep_us(2000 // 2)
if __name__ == "__main__":
main()