Materi: Smart Trashbin: Program Lengkap
17%

Smart Trashbin: Program Lengkap

Micro:bit IoT

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



  1. Buka Makecode → New Project → beri nama "SmartTrashbin"

  2. Klik Extensions → cari "Sonar" → tambahkan ekstensi

  3. Beralih ke mode JavaScript → paste kode contoh di atas

  4. Klik tombol Download → simpan file .hex

  5. Colokkan Micro:bit ke komputer → salin file ke drive MICROBIT

  6. 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
Kode Contoh
// ══════════════════════════════════════════
// 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!
Blok Blockly
Kode JavaScript
// Kode JavaScript akan dihasilkan secara otomatis dari Blok...

Simulator BBC micro:bit

(1,0)(3,0)(0,1)(2,1)(4,1)(0,2)(4,2)(1,3)(3,3)(2,4)P0, ANALOG INP1, ANALOG INP2, ANALOG INP3, ANALOG IN, LED Col 1P4, ANALOG IN, LED Col 2P5, BUTTON AP6, LED Col 9P7, LED Col 8P8P9, LED Col 7P10, ANALOG IN, LED Col 3P11, BUTTON BP12, RESERVED ACCESSIBILITYP13, SPI - SCKP14, SPI - MISOP15, SPI - MOSIP16, SPI - Chip SelectP17, +3v3P18, +3v3P19, I2C - SCLP20, I2C - SDAGNDGND+3v3GNDAB
Sensor Virtual
Suhu Ambient: 25 °C
Tingkat Cahaya: 128
Kontrol Tombol:
Klik Tombol A Klik Tombol B Goyang Board (Shake)