from machine import Pin, PWM, ADC
import time
led1 = PWM(Pin(15))
led2 = PWM(Pin(16))
led3 = PWM(Pin(17))
led1.freq(1000)
led2.freq(1000)
led3.freq(1000)
potenciometar = ADC(Pin(28))
taster_naprijed = Pin(18, Pin.IN, Pin.PULL_DOWN)
taster_nazad = Pin(19, Pin.IN, Pin.PULL_DOWN)
trenutna_led = 1
potrebna_promjena = False
debounce_delay = 200
zadnje_vrijeme_naprijed = 0
zadnje_vrijeme_nazad = 0
def postavi_svjetlost_led(led, vrijednost):
duty_ciklus = int(vrijednost / 65535 * 1023) # Pretvorba ADC vrijednosti u PWM (0-1023)
led.duty_u16(duty_ciklus)
def ugasi_sve_ledice():
led1.duty_u16(0)
led2.duty_u16(0)
led3.duty_u16(0)
# Prekidne rutine za tastere
def prekid_naprijed(pin):
global trenutna_led, potrebna_promjena, zadnje_vrijeme_naprijed
trenutno_vrijeme = time.time() * 1000 # Trenutno vrijeme u milisekundama
if trenutno_vrijeme - zadnje_vrijeme_naprijed > debounce_delay:
trenutna_led = (trenutna_led % 3) + 1
potrebna_promjena = True
zadnje_vrijeme_naprijed = trenutno_vrijeme
def prekid_nazad(pin):
global trenutna_led, potrebna_promjena, zadnje_vrijeme_nazad
trenutno_vrijeme = time.time() * 1000
if trenutno_vrijeme - zadnje_vrijeme_nazad > debounce_delay:
trenutna_led = (trenutna_led - 2) % 3 + 1
potrebna_promjena = True
zadnje_vrijeme_nazad = trenutno_vrijeme
# Postavljanje prekida za tastere
taster_naprijed.irq(trigger=Pin.IRQ_RISING, handler=prekid_naprijed)
taster_nazad.irq(trigger=Pin.IRQ_RISING, handler=prekid_nazad)
while True:
if potrebna_promjena:
ugasi_sve_ledice()
potrebna_promjena = False
vrijednost_potenciometra = potenciometar.read_u16()
if trenutna_led == 1:
postavi_svjetlost_led(led1, vrijednost_potenciometra)
elif trenutna_led == 2:
postavi_svjetlost_led(led2, vrijednost_potenciometra)
elif trenutna_led == 3:
postavi_svjetlost_led(led3, vrijednost_potenciometra)
time.sleep(0.01)