#000000; background-color:
#fffffe; font-family: 'Droid Sans Mono', 'monospace', monospace; font-weight: normal; font-size: 14px; line-height: 19px; white-space: pre;">
#0000ff;">from#000000;"> machine #0000ff;">import#000000;"> Pin, PWM
#0000ff;">import#000000;"> time
#008000;"># Definisikan pin secara manual
#000000;">servoPin = #098658;">23
#000000;">trigPin = #098658;">5
#000000;">echoPin = #098658;">18
#000000;">led = Pin(#098658;">2#000000;">, Pin.OUT)
#008000;"># Inisialisasi pin servo
#000000;">servo = PWM(Pin(servoPin))
#000000;">servo.freq(#098658;">50#000000;">)
#000000;">servo.duty(#098658;">0#000000;">)
#008000;"># Inisialisasi pin-pi lainnya
#000000;">trig = Pin(trigPin, Pin.OUT)
#000000;">echo = Pin(echoPin, Pin.IN)
#008000;"># Variabel untuk menyimpan data jarak
#000000;">dist = #098658;">0
#000000;">aver = [#098658;">0#000000;">, #098658;">0#000000;">, #098658;">0#000000;">]
#0000ff;">def#000000;"> measure():
#000000;"> led.on()
#000000;"> trig.off()
#000000;"> time.sleep_us(#098658;">5#000000;">)
#000000;"> trig.on()
#000000;"> time.sleep_us(#098658;">15#000000;">)
#000000;"> trig.off()
#000000;">
#000000;"> #0000ff;">while#000000;"> echo.value() == #098658;">0#000000;">:
#000000;"> #0000ff;">pass
#000000;"> pulse_start = time.ticks_us()
#000000;">
#000000;"> #0000ff;">while#000000;"> echo.value() == #098658;">1#000000;">:
#000000;"> #0000ff;">pass
#000000;"> pulse_end = time.ticks_us()
#000000;">
#000000;"> duration = pulse_end - pulse_start
#000000;"> dist = duration // #098658;">2#000000;"> // #098658;">29.1
#000000;"> #0000ff;">return#000000;"> dist
#0000ff;">def#000000;"> setup():
#000000;"> servo.duty(#098658;">0#000000;">)
#000000;"> time.sleep_ms(#098658;">100#000000;">)
#000000;"> servo.deinit()
#0000ff;">def#000000;"> loop():
#000000;"> #0000ff;">for#000000;"> i #0000ff;">in#000000;"> #0000ff;">range#000000;">(#098658;">3#000000;">):
#000000;"> aver[i] = measure()
#000000;"> time.sleep_ms(#098658;">10#000000;">)
#000000;">
#000000;"> dist = #0000ff;">sum#000000;">(aver) // #098658;">3
#000000;"> #0000ff;">if#000000;"> dist < #098658;">50#000000;">:
#000000;"> servo = PWM(Pin(servoPin))
#000000;"> servo.freq(#098658;">50#000000;">)
#000000;"> servo.duty(#098658;">40#000000;">)
#000000;"> time.sleep_ms(#098658;">1#000000;">)
#000000;"> servo.duty(#098658;">0#000000;">)
#000000;"> time.sleep_ms(#098658;">3000#000000;">)
#000000;"> servo.duty(#098658;">75#000000;">)
#000000;"> time.sleep_ms(#098658;">1000#000000;">)
#000000;"> servo.deinit()
#000000;"> #0000ff;">print#000000;">(dist)
#000000;">setup()
#0000ff;">while#000000;"> #0000ff;">True#000000;">:
#000000;"> 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,
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.
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.
Discussion (0)