Inilah momen yang ditunggu-tunggu! Kita akan menulis program Smart Trashbin secara lengkap dan menyeluruh, menggabungkan semua konsep yang telah dipelajari.
🎯 Tujuan Pembelajaran:
- Menulis program Smart Trashbin secara lengkap
- Memahami struktur kode yang baik dengan fungsi dan komentar
- Men-download dan mengujikan program ke Micro:bit
Langkah Upload Program
- Buka Makecode → New Project → beri nama "SmartTrashbin"
- Klik Extensions → cari "Sonar" → tambahkan ekstensi
- Beralih ke mode JavaScript → paste kode contoh di atas
- Klik tombol Download → simpan file
.hex
- Colokkan Micro:bit ke komputer → salin file ke drive MICROBIT
- Tunggu LED kuning selesai berkedip → uji coba!
🔧 Konfigurasi Pin:
• P0 = Servo Motor SG90
• P1 = TRIG Sensor Ultrasonik
• P2 = ECHO Sensor Ultrasonik (via voltage divider)
• P3 = LED Hijau (330Ω)
• P4 = LED Merah (330Ω)
• P5 = Buzzer Pasif
// ══════════════════════════════════════════
// SMART TRASHBIN — Micro:bit + HC-SR04
// ══════════════════════════════════════════
// ── Konfigurasi ──────────────────────────
const JARAK_BUKA = 20 // cm: jarak untuk buka
const SUDUT_BUKA = 90 // derajat: servo saat terbuka
const SUDUT_TUTUP = 0 // derajat: servo saat tertutup
const DELAY_TUTUP = 3000 // ms: jeda sebelum menutup
// ── Variabel Global ───────────────────────
let tutupTerbuka = false
let hitunganBuka = 0
// ── Fungsi: Buka Tutup ────────────────────
function bukaTutup() {
if (!tutupTerbuka) {
pins.servoWritePin(AnalogPin.P0, SUDUT_BUKA)
pins.digitalWritePin(DigitalPin.P3, 1)
music.playTone(523, 100)
tutupTerbuka = true
hitunganBuka += 1
}
}
// ── Fungsi: Tutup Kembali ─────────────────
function tutupKembali() {
pins.servoWritePin(AnalogPin.P0, SUDUT_TUTUP)
pins.digitalWritePin(DigitalPin.P3, 0)
tutupTerbuka = false
}
// ── Tombol A: lihat statistik ─────────────
input.onButtonPressed(Button.A, function () {
basic.showString("N:" + hitunganBuka)
})
// ── Program Utama ─────────────────────────
basic.forever(function () {
let jarak = sonar.ping(DigitalPin.P1, DigitalPin.P2, PingUnit.Centimeters)
if (jarak > 0 && jarak < JARAK_BUKA) {
bukaTutup()
basic.pause(DELAY_TUTUP)
tutupKembali()
}
basic.pause(200)
})
Tantangan Mandiri: Tarik blok program di sebelah kanan agar menyusun logika kode contoh di atas, lalu klik Play untuk melihat hasilnya pada simulator!