Ultrasonic Trashcan
Ultrasonic Trashcan
Ultrasonic Trashcan ESP32
Wokwi
Script
from machine import Pin, PWM
import time
# Definisikan pin secara manual
servoPin = 23
trigPin = 5
echoPin = 18
led = Pin(2, Pin.OUT)
# Inisialisasi pin servo
servo = PWM(Pin(servoPin))
servo.freq(50)
servo.duty(0)
# Inisialisasi pin-pi lainnya
trig = Pin(trigPin, Pin.OUT)
echo = Pin(echoPin, Pin.IN)
# Variabel untuk menyimpan data jarak
dist = 0
aver = [0, 0, 0]
def measure():
led.on()
trig.off()
time.sleep_us(5)
trig.on()
time.sleep_us(15)
trig.off()
while echo.value() == 0:
pass
pulse_start = time.ticks_us()
while echo.value() == 1:
pass
pulse_end = time.ticks_us()
duration = pulse_end - pulse_start
dist = duration // 2 // 29.1
return dist
def setup():
servo.duty(0)
time.sleep_ms(100)
servo.deinit()
def loop():
for i in range(3):
aver[i] = measure()
time.sleep_ms(10)
dist = sum(aver) // 3
if dist < 50:
servo = PWM(Pin(servoPin))
servo.freq(50)
servo.duty(40)
time.sleep_ms(1)
servo.duty(0)
time.sleep_ms(3000)
servo.duty(75)
time.sleep_ms(1000)
servo.deinit()
print(dist)
setup()
while True:
loop()
Program ini merupakan implementasi sederhana dari sensor ultrasonik yang digunakan untuk pengukuran jarak. Program ini menggunakan MicroPython dan ESP32 untuk mengontrol berbagai perangkat seperti motor servo, sensor ultrasonik, dan LED.
Pada awal program, pin GPIO yang digunakan untuk motor servo, pin pemicu sensor ultrasonik, pin gema sensor ultrasonik, dan LED diinisialisasi menggunakan modul pin perpustakaan mesin. Pin motor servo juga diinisialisasi menggunakan modul PWM yang mengontrol sinyal PWM yang digunakan untuk menggerakkan motor servo.
Selain itu, fungsi "measure()" digunakan untuk mengukur jarak menggunakan sensor ultrasonik. Fitur ini menyetel pin pemicu dan gema, mentransmisikan sinyal ultrasonik,
mengukur durasi pantulan, dan menghitung jarak dalam sentimeter.
Fungsi setup() digunakan untuk melakukan setup awal motor servo sebelum menjalankan program utama.
Fungsi LOOP() digunakan untuk mengukur jarak tiga kali dengan memanggil fungsi measure() dan menyimpan hasilnya dalam daftar rata-rata. Setelah 3 pengukuran selesai, jarak rata-rata dari 3 pengukuran dihitung.
Lalu ada pernyataan bersyarat if yang memeriksa apakah jarak yang diukur kurang dari 50cm. Dalam hal ini, motor servo digerakkan pada posisi duty cycle tertentu selama beberapa waktu.
Terakhir, jarak yang diukur dicetak ke konsol.
Program kemudian memanggil fungsi setup() untuk menginisialisasi preferensi dan kemudian memasuki loop utama berkelanjutan (sementara True). Dalam loop ini, fungsi loop() terus dipanggil, pengukuran dilakukan, dan motor servo dikendalikan berdasarkan pengukuran.
Dyskusja (0)