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()
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT