print('This program integrate ESP32 + Ultrasonic')
#import all related module/library
import ultrasoniclib
from utime import sleep
from machine import Pin, SoftI2C, PWM #pulse width modulation
import oledlib
#declare pin connection for ultrasonic and
#create an object for ultrasonic using OOP (object Oriented Programming)
#format OOP --> library nama.class name()
ciku = ultrasoniclib.HCSR04(trigger_pin=27, echo_pin=26, echo_timeout_us=500*2*30)
i2c_oleddisplay = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128 #based on spec
oled_height = 64 #based on spec
oled = oledlib.SSD1306_I2C(oled_width, oled_height, i2c_oleddisplay)
#declare buzzer connection
buzzer = PWM(Pin(23),Pin.OUT)
while True:
#test ciku!
jarak_in_mm = ciku.distance_mm()
jarak_in_cm = ciku.distance_cm()
#display the distance values in mm & cm (serial monitor)
print('The distance from an object in mm is :', jarak_in_mm)
print('The distance from an object in cm is :', jarak_in_cm)
print('------------------------------------------------------')
print('\n')
#display the distance value on oled screen:
oled.fill(0)
oled.text('Object Detected',0,0,1) #x-axis,y-axis,colorfont(1-white,0-black)
oled.text(str(jarak_in_mm),0,20,1) #0-mula paling kiri
oled.text('mm',40,20,1)
oled.text(str(jarak_in_cm),0,40,1)
oled.text('cm',70,40,1)
oled.show()
#making decision on how close the object
if jarak_in_cm < 100:
#making sound for buzzer
for i in range(5):
buzzer.init(freq=444, duty=333)
sleep(1)
buzzer.init(freq=1, duty=0)
sleep(0.5)
elif 100 <= jarak_in_cm< 150:
#making sound for buzzer
for i in range(5):
buzzer.init(freq=5000, duty=555)
sleep(1)
buzzer.init(freq=1, duty=0)
sleep(0.5)
else:
buzzer.init(freq=1, duty=0)
sleep(5)