print("This program will integrate ESP32 with ultrasonic sensor")
#Import nexcessary module/libraries
import hcsr04 #ultrasonic library
import ssd1306 #oled library
from utime import sleep
from machine import SoftI2C,Pin ,PWM #PWM= Pulse Witdh MOde
#Create an object called ultrasomic_sensor using OOP (Object Oriented Programming)
#OOP format is --> library name.class name (......)
ultrasonic_sensor=hcsr04.HCSR04(trigger_pin=13, echo_pin=27, echo_timeout_us=500*2*30)
#2.Declare pin on LED Display
i2c_oled = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128 #based on spec
oled_height = 64 #based on spec
#4.Create an object called "oled"
#Remark: object format "library name.class name"
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c_oled)
#Declare buzzer connection
buzzer=PWM(Pin(23),Pin.OUT)
while True:
#Let's test our ultrasonic sensor
jarak_in_cm = ultrasonic_sensor.distance_cm()#use when u need decimal point number
jarak_in_mm = ultrasonic_sensor.distance_mm()#use when u want whole number
#Display the distance vaalues on Serial Monitor
print('An object is detected in :', jarak_in_cm, 'cm')
print('An object is detected in :', jarak_in_mm, 'mm')
print('---------------------------------------------')
print('\n')
#Display distance value on OLED screen
oled.fill(0)#To make screen becoming white
oled.text('Object Detected', 0, 0, 1) #1st 0 is X-axis,2nd 0 is Y-axis,3rd is colour display
oled.text(str(jarak_in_cm), 0, 20, 1)
oled.text('cm',70, 20, 1)
oled.text(str(jarak_in_mm), 0, 40, 1)
oled.text('mm',40, 40, 1)
oled.show()
if jarak_in_cm <50:
for i in range(10):
buzzer.init(freq=1669,duty=512)
sleep(0.5)
buzzer.init(freq=1,duty=0)
sleep(0.5)
elif 50 <= jarak_in_cm<150:
for i in range(10):
buzzer.init(freq=1669,duty=512)
sleep(0.5)
buzzer.init(freq=1,duty=0)
sleep(0.5)
else:
buzzer.init(freq=1,duty=0)
sleep(5)