from machine import Pin
import time
time.sleep(0.1) # Wait for USB to become ready
pomodoroPeriod = 30
timeLeft = pomodoroPeriod
isPomodoroRunning = False
startTimeSeconds = 0
StartPausePomodoroTimerButton = Pin(0, machine.Pin.IN, machine.Pin.PULL_DOWN)
ResetPomodoroTimerButton = Pin(1, machine.Pin.IN, machine.Pin.PULL_DOWN)
class LEDController:
global pomodoroPeriod
global timeLeft
global isPomodoroRunning
def __init__(self, pin_number, led_number):
self.pin_number = pin_number
self.led_number = led_number
self.LED = Pin(pin_number, machine.Pin.OUT)
def updateState(self):
# print("LED update is triggered, led number: " + str(self.led_number))
if isPomodoroRunning == True:
currentTimeSeconds = time.time()
secondsPassed = currentTimeSeconds - startTimeSeconds
shouldBeOn = secondsPassed < pomodoroPeriod * 0.166 * self.led_number
self.LED.value(shouldBeOn)
print("LED #" + str(self.led_number) + " state: " + str(shouldBeOn))
else:
self.LED.value(True)
LEDS = [LEDController(10, 1), LEDController(11, 2), LEDController(12, 3), LEDController(13, 4), LEDController(14, 5), LEDController(15, 6)]
def StartStopHandler(pin):
global isPomodoroRunning
global startTimeSeconds
if pin == StartPausePomodoroTimerButton:
if isPomodoroRunning == True:
isPomodoroRunning = False
print("Pomodoro is stopped")
else:
isPomodoroRunning = True
startTimeSeconds = time.time()
print("Pomodoro is started")
def ResetHandler(pin):
global isPomodoroRunning
if pin == ResetPomodoroTimerButton:
isPomodoroRunning = False
timeLeft = pomodoroPeriod
startTimeSeconds = 0
print("Pomodoro is reset")
StartPausePomodoroTimerButton.irq(trigger = machine.Pin.IRQ_RISING, handler = StartStopHandler)
ResetPomodoroTimerButton.irq(trigger = machine.Pin.IRQ_RISING, handler = ResetHandler)
while True:
for led in LEDS:
led.updateState()
secondsPassed = time.time() - startTimeSeconds
if secondsPassed > pomodoroPeriod:
isPomodoroRunning = False
timeLeft = pomodoroPeriod
startTimeSeconds = 0
time.sleep(1)