"""
Demonstrating machine.Timer
"""
import time
from machine import Pin, Timer, ADC
from hcsr04 import HCSR04
import utime as time
import urandom as random
time.sleep(0.1) # Wait for USB to become ready
print("Hello, Pi Pico!")
# --- Distance Sensor Setup using HCSR04 library ---
left_distance = HCSR04(trigger_pin=19, echo_pin=18, echo_timeout_us=10000)
right_distance = HCSR04(trigger_pin=17, echo_pin=16, echo_timeout_us=10000)
# -- Light Dependent Resistor AO to measure light intensity --
light = ADC(2)
# --- sensor wrapper functions
# must be short with no sleep or IO
def read_left_distance():
return left_distance.distance_cm()
def read_right_distance():
return right_distance.distance_cm()
def read_light():
return light.read_u16()
# --- State - initialise with dummy data
sensors = {
'left_distance': 0,
'right_distance': 0,
'light': 0
}
flags = {
'distance_ready': False,
'light_ready': False}
# --- Timer Callbacks ---
# these are the functions that are called by the Timers
def distance_callback(timer):
sensors['left_distance'] = read_left_distance()
sensors['right_distance'] = read_right_distance()
flags['distance_ready'] = True
def light_callback(timer):
sensors['light'] = read_light()
flags['light_ready'] = True
# --- Timer Setup ---
distance_timer = Timer()
light_timer = Timer()
# reads distance sensors every 200 ms
distance_timer.init(period=200, mode=Timer.PERIODIC, callback=distance_callback)
# read the light sensor every 500 ms
light_timer.init(period=500, mode=Timer.PERIODIC, callback=light_callback)
# --- Main Loop ---
while True:
now = time.time()
print(sensors)
time.sleep_ms(100) # Short delay to avoid CPU spinning