print("Hello, ESP32!")
#import all necessary modules/libraries
import hcsr04 #Sensor Library
import ssd1306 #OLED Library
from utime import sleep
from machine import SoftI2C, Pin, PWM
#declare ultrasonic pin connection
#create object call ultrasonic sensir using OOP (Object Oriented Programming)
#OOP format is > library name.class name (trigger_pin, echo_pin, echo_timeout_us=500*2*30)
ultrasonic_sensor = hcsr04.HCSR04(trigger_pin=12, echo_pin=14, echo_timeout_us=500*2*30)
#PIN Declaration on LED
i2c_oleddisplay = SoftI2C(scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
#Use OOP to create project
# Remark: Objectformat > library name.class name
# (Width, Height, i2c)
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c_oleddisplay)
#Declare Buzzer Pin
buzzer = PWM(Pin(4), Pin.OUT)
while True:
#let's test the sensor
object_detect_cm = ultrasonic_sensor.distance_cm()
object_detect_mm = ultrasonic_sensor.distance_mm()
#display object distance on Serial Monitor
print("Distance from an object in cm :", object_detect_cm) #Use this if u want decimal point value
print("Distance from an object in mm :", object_detect_mm) #Use this if u want whole number/value
print("---------------------------------------------------\n")
#Display object on OLED Screen
oled.fill(0)
oled.text('Object Detected:', 0, 0, 1)
oled.text(str(object_detect_cm), 0, 20, 1)
oled.text('mm', 70,20,1)
oled.text(str(object_detect_mm), 0, 40, 1)
oled.show()
if object_detect_cm > 150:
buzzer.init(freq=1, duty=0)
else:
for i in range (5):
buzzer.init(freq=1000, duty=512)
sleep(0.5)
buzzer.init(freq=1, duty=0)
sleep(0.5)
sleep(5)
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
ultrasonic1:VCC
ultrasonic1:TRIG
ultrasonic1:ECHO
ultrasonic1:GND
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA
bz1:1
bz1:2