#Program: Pico_Python_17interrupt.py #########
from machine import Pin
import time
#initial variables here
flag_LED1 = True
pin_LED1 = 3
pin_LED2 = 4
pin_SW1 = 2
flag_SW1 = False
count = 1;
#Here template for multi-tasking
currentTime = 0
#1000 = 1 second
task1Time = 1000 #for LED1
task2Time = 10 #for SW1
task3Time = 10 #control LED2
task4Time = 1000
task5Time = 1000
previousMillis_1 = 0
previousMillis_2 = 0
previousMillis_3 = 0
previousMillis_4 = 0
previousMillis_5 = 0
#program START here
def isr_SW1(SW1):
global count
print("interrupt count = ",count)
count +=1
LED2.on()
time.sleep_ms(100)
LED2.off()
#setup here
LED1 = Pin(pin_LED1, Pin.OUT)
LED1.value(flag_LED1) #initial LED1 = ON
LED2 = Pin(pin_LED2, Pin.OUT)
LED2.value(False) #initial LED2 = OFF
SW1 = Pin(pin_SW1, Pin.IN, Pin.PULL_UP) #PULL_DOWN
SW1.irq(trigger=Pin.IRQ_FALLING, handler=isr_SW1)
#_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.value(flag_LED1)
flag_LED1 = not flag_LED1
print("Task 1 run")
#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 ##################