# Impor library yang diperlukan
from machine import Pin, PWM, I2C
from time import sleep_ms
from hcsr04 import HCSR04
import ssd1306
# Definisikan pin ESP32
trigger_pin = 13 # Pin trigger HC-SR04
echo_pin = 27 # Pin echo HC-SR04
buzzer_pin = 16 # Pin buzzer
i2c_scl = 22 # Pin SCL I2C
i2c_sda = 21 # Pin SDA I2C
oled_width = 128 # Lebar layar OLED
oled_height = 64 # Tinggi layar OLED
# Inisialisasi pin dan objek
buzzer = PWM(Pin(buzzer_pin), freq=1000) # Buat objek PWM untuk buzzer
i2c = I2C(scl=Pin(i2c_scl), sda=Pin(i2c_sda)) # Buat objek I2C
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c) # Buat objek OLED
sensor = HCSR04(trigger_pin, echo_pin) # Buat objek sensor HC-SR04
# Fungsi untuk mengukur jarak
def measure_distance():
distance = sensor.distance_cm()
return distance
# Fungsi untuk menampilkan jarak di OLED
def display_distance(distance):
oled.fill(0) # Bersihkan layar OLED
oled.text("Jarak:", 0, 0) # Tuliskan teks "Jarak:"
oled.text(str(distance) + " cm", 60, 0) # Tuliskan nilai jarak
oled.show() # Tampilkan layar OLED
# Fungsi untuk mengatur frekuensi buzzer berdasarkan jarak
def set_buzzer_frequency(distance):
if distance <= 20:
frequency = 2000 # Frekuensi tinggi untuk jarak dekat
elif distance <= 50:
frequency = 1500 # Frekuensi sedang untuk jarak menengah
else:
frequency = 1000 # Frekuensi rendah untuk jarak jauh
buzzer.freq(frequency)
# Loop utama
while True:
distance = measure_distance() # Ukur jarak
display_distance(distance) # Tampilkan jarak di OLED
set_buzzer_frequency(distance) # Atur frekuensi buzzer berdasarkan jarak
sleep_ms(100) # Tunggu 100 milidetik