import uasyncio as asyncio
from time import sleep
from machine import Pin, ADC
from lcd1602 import LCD
from hcsr04 import HCSR04
lcd = LCD()
ledR = Pin(12, Pin.OUT)
ledG = Pin(13, Pin.OUT)
pbPin = Pin(16, Pin.IN, Pin.PULL_UP)
adcPin = ADC(28)
sensor = HCSR04(trigger_pin=2, echo_pin=3)
async def display_startup():
lcd.clear()
lcd.write(0,0, "Distance Counter")
await asyncio.sleep(2)
async def blink_ledG():
while True:
ledG.value(1)
await asyncio.sleep(0.1)
ledG.value(0)
await asyncio.sleep(0.1)
async def user_input():
lcd.clear()
lcd.write(0, 0, "User Input")
while pbPin.value() == 1:
distance = int(10 + (adcPin.read_u16() / 65535) * 90)
lcd.write(0, 1, "Dist : {}cm".format(distance))
await asyncio.sleep(0.1)
async def scanning_distance():
while True:
distance = sensor.distance_cm()
lcd.clear()
lcd.write(0, 0, "Distance : {}cm".format(int(distance)))
if distance >= 10 and distance <= 100:
lcd.write(0, 1, "Object : Yes")
ledR.value(0)
ledG.value(1)
else:
lcd.write(0, 1, "Object : No")
ledR.value(1)
ledG.value(0)
await asyncio.sleep(0.1)
if pbPin.value() == 0:
await asyncio.sleep(0.1)
ledR.value(0)
ledG.value(0)
return
async def main():
asyncio.create_task(blink_ledG())
await display_startup()
await asyncio.sleep(0.1)
await user_input()
while True:
await scanning_distance()
await user_input()
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()