import time
import init as pyRTOS
from machine import Pin ,PWM ,ADC
# Define tasks
def task1(self):
led1 = Pin(2, Pin.OUT)
led1.off()
yield
while True:
time.sleep_ms(10)
led1.toggle()
print("Task 1 is running")
yield [pyRTOS.timeout_ns(1000000000)] # Sleep for 1 second
def task2(self):
led2 = Pin(7, Pin.OUT)
led2.off()
yield
while True:
time.sleep_ms(10)
led2.toggle()
print("Task 2 is running")
yield [pyRTOS.timeout_ns(3000000000)] # Sleep for 1.5 seconds
# Create tasks
def task_PWM(self):
global duty_us
pwm = PWM(Pin())
pwm.freq(50)
pwm.duty_ns(500000)
yield
while True:
time.sleep_ms(10)
pwm.duty_ns(int(duty_us*1000))
yield[pyRTOS.timeout_ns(10000000)]
def task_ADC(self):
global duty_us
MIN_DUTY = 500
MAX_DUTY = 2500
MAX_U16 = 65535
dY = MAX_DUTY - MIN_DUTY
adc = ADC(Pin())
yield
while True:
time.sleep_ms(10)
duty_us = (adc.read_u16()*dY/65535)+MIN_DUTY
yield[pyRTOS.timeout_ns(10000000)]
pyRTOS.add_task(pyTOS.Task(task_ADC,name='taskADC'))
pyRTOS.add_task(pyRTOS.Task(task_PWM,name'taskPWM'))
pyRTOS.add_task(pyRTOS.Task(task1,name='task1'))
pyRTOS.add_task(pyRTOS.Task(task2,name='task2'))
# Start the scheduler
pyRTOS.start()
while True:
time.sleep_ms(10)
pass