print("this program will integrate with ultrasonic sensor")
#IMPORT NECESSARY MODULE/LIBRARIES
import hcsr04 #ultasonic lib
import ssd1306 #oled lib
from utime import sleep
from machine import SoftI2C, Pin, PWM #pulse width modulation
#create an object called ultrasonic_sensor using OOP (object oriented programming)
#OOP format is --> library name.class name(....)
ultrasonic_sensor = hcsr04.HCSR04(trigger_pin = 4, echo_pin = 18, echo_timeout_us=500*2*30)
#2. declare pin on OLED display
i2c_oled = SoftI2C(scl=Pin(22), sda=Pin(21))
#3. define OLED basic parameter
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 pointer number
jarak_in_mm = ultrasonic_sensor.distance_mm() #use when u want whole number
#display the distance values 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(1)#1 for background white 0 for background black
oled.text('distance detected:', 0, 0,0) #1st 0 is x-axis, 2nd 0 y axis,
oled.text(str(jarak_in_cm), 0, 10,0)
oled.text('cm', 70, 10, 1)
oled.text(str(jarak_in_mm), 0, 30,0)
oled.text('mm', 70, 30, 0)
oled.show()
if jarak_in_cm < 50:
for i in range(5):
buzzer.init(freq=2890, duty=400)
sleep(0.5)
buzzer.init(freq=1, duty=0)
sleep(0.5)
elif 50 <= jarak_in_cm<150:
for i in range (5):
buzzer.init(freq=2890, duty=0)
sleep(0.5)
buzzer.init(freq=2890, duty=0)
sleep(0.5)
else:
buzzer.init(freq=1, duty=0)
sleep(5)