#Import library ultrasonic, Oled, pwm time
import HCSR04
import ssd1306
from machine import SoftI2C, Pin, PWM
from time import sleep
#Declare connection pin using OOP
#For ultrasonic sensor
ultrasonic_sensor=HCSR04.HCSR04(trigger_pin=14,echo_pin=26,echo_timeout_us=500*2*30) #500 is speed of sound.
#for oled
i2c_oleddisplay= SoftI2C(scl=Pin(21), sda=Pin(22))
oled_width=128
oled_height=64
oled=ssd1306.SSD1306_I2C(oled_width,oled_height,i2c_oleddisplay)
#For Buzzer
buzzer=PWM(Pin(23),Pin.OUT)
#for LED
led1 = Pin(19,Pin.OUT)
led2 = Pin(18,Pin.OUT)
led3 = Pin(5,Pin.OUT)
#Process
while True:
distance_in_cm=ultrasonic_sensor.distance_cm()
print('An object is detected in:', distance_in_cm,'cm')
oled.fill(1) #1 means line number 1
oled.text('Object detected',2,10,0)
oled.text(str(distance_in_cm),5,20,0)
oled.text('cm',75,20,0)
oled.show()
if distance_in_cm<15:
for i in range(100):
buzzer.init(freq=1850,duty=1000)
sleep(0.2)
buzzer.init(freq=1,duty=0)
sleep(0.2)
led1.on()
sleep(0.1)
led1.off()
sleep(0.1)
elif 15<= distance_in_cm<30:
for i in range(100):
buzzer.init(1750,duty=250)
sleep(0.5)
buzzer.init(freq=1,duty=0)
sleep(0.5)
led2.on()
sleep(0.5)
led2.off()
sleep(0.5)
elif 30<= distance_in_cm<50:
for i in range(100):
buzzer.init(freq=1500,duty=150)
sleep(1)
buzzer.init(freq=1,duty=0)
sleep(1)
led3.on()
sleep(1)
led3.off()
sleep(1)
else:
buzzer.init(freq=1,duty=0)
sleep(5)
while True:
led1.on()
sleep(0.1)
led1.off()
sleep(0.1)
led2.on()
sleep(0.1)
led2.off()
sleep(0.1)
led3.on()
sleep(0.1)
led3.off()
sleep(0.1)