#Program: Pico_Python_19interrupt.py #########
from machine import Pin
import time
#Here template for multi-tasking
currentTime = 0
#1000 = 1 second
task1Time = 1000 #LED1 toggle
task2Time = 1000
task3Time = 1000
task4Time = 1000
task5Time = 1000
previousMillis_1 = 0
previousMillis_2 = 0
previousMillis_3 = 0
previousMillis_4 = 0
previousMillis_5 = 0
#initial variables here
pin_LED1 = 12
pin_LED2 = 13
pin_SW1 = 14
pin_SW2 = 15
count1 = 1 #For interrupt monitor
count_Task1 = 1
#define functions here: ISRs
#Keep the code as short and simple as possible
def isr_SW1(pin): #callback here
LED2.off()
def isr_SW2(pin): #callback here
LED2.on()
#setup here
LED1 = Pin(pin_LED1, Pin.OUT)
LED1.on()
LED2 = Pin(pin_LED2, Pin.OUT)
LED2.on()
SW1 = Pin(pin_SW1, Pin.IN, Pin.PULL_UP)
SW1.irq(trigger=Pin.IRQ_FALLING, handler=isr_SW1) #_RISING, _FALLING
SW2 = Pin(pin_SW2, Pin.IN, Pin.PULL_UP)
SW2.irq(trigger=Pin.IRQ_FALLING, handler=isr_SW2) #_RISING, _FALLING
state = machine.disable_irq() #Disable the interrupt.
machine.enable_irq(state) #Enable the interrupt.
print("Hello World,","LED1&2 : ON")
#infinite loop here
while True:
currentTime = time.ticks_ms() #or _us for microsecond
#Task 1 here
if (currentTime - previousMillis_1) >= task1Time:
previousMillis_1 = currentTime
LED1.toggle()
print("Task 1 run, count_Task1 = ", count_Task1)
count_Task1 +=1
#Task 2 here
if (currentTime - previousMillis_2) >= task2Time:
previousMillis_2 = currentTime
#Task 3 here
if (currentTime - previousMillis_3) >= task3Time:
previousMillis_3 = currentTime
#Task 4 here
if (currentTime - previousMillis_4) >= task4Time:
previousMillis_4 = currentTime
#Task 5 here
if (currentTime - previousMillis_5) >= task5Time:
previousMillis_5 = currentTime
#END program here ##################