print("Hello, ESP32!")
print("THIS PROGRAM WILL INTEGRATE ESP32 WITH ULTRASONIC SENSOR!\n")
#import necessary modules/libraries
import hcsr04 # ultrasonic library
import ssd1306 #oled library
from utime import sleep
from machine import Pin, SoftI2C, PWM # SoftI2C untuk SDL & SDA
# create an object called ultrasonic sensor using Object Oriented Programming (oop)
# OOP format is --> library name. class name(...)
# library name . class name
ultrasonic_sensor = hcsr04.HCSR04(trigger_pin=13, echo_pin=27, echo_timeout_us=500*2*30)
# 2. declare pin on oled display
i2c_oled = SoftI2C(scl=Pin(22), sda=Pin(21))
# 3. define basic oled parameter
oled_width = 128 #based on spec
oled_height = 64 #based on spec
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c_oled)
#declare buzzer connection
buzzer = PWM(Pin(26),Pin.OUT)
while True:
# lets test our sensor
jarak_in_cm = ultrasonic_sensor.distance_cm()
jarak_in_mm = ultrasonic_sensor.distance_mm()
# display the distance value on serial monitor
print("OBJECT DITECTED IN : ",jarak_in_cm, "cm") #use for decimal number
print("OBJECT DITECTED IN : ",jarak_in_mm, "mm") # use for number bulat
print("--------------------------------------------")
print("\n")
# diplay on oled screen
oled.fill(0)
oled.text('Jarak Detected : ', 0, 0, 1) # 1st is x-axis, 2nd is y-axis,3rd is color
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(5):
# nak tukar kekuatan bunyi
buzzer.init(freq=1000, duty=888)
sleep(0.2)
buzzer.init(freq=1, duty=0)
sleep(0.2)
elif 50 <=jarak_in_cm < 150:
for i in range (5):
buzzer.init(freq=1765, duty=888)
sleep(0.5)
buzzer.init(freq=1, duty=0)
sleep(0.5)
else :
buzzer.init(freq=1, duty=0)
sleep(3)