Mempelajari cara menskalakan data sensor dengan fungsi map() dan memecah program besar menjadi fungsi-fungsi modular yang reusable.
Bayangkan kalian memiliki peta dunia yang besar dan ingin memindahkannya ke selembar kertas HVS. Kalian tidak mungkin menggambar benua sebesar ukuran aslinya, bukan? Kalian harus menskalakannya(membuat skalanya) agar sesuai dengan ukuran kertas.
Dalam Arduino, kita sering mendapat data sensor dalam bentuk nilai kasar (seperti nilai ADC `0-1023`), tetapi kita ingin mengubahnya menjadi persentase kelembaban tanah (`0-100%`) atau derajat servo (`0-180`). Proses mengubah rentang data ini disebut skalasi data.
map() di Arduino memetakan suatu angka dari satu rentang (range) ke rentang yang lain.map(nilai, batasBawahAsli, batasAtasAsli, batasBawahBaru, batasAtasBaru)Misalkan, sensor kelembaban tanah memberikan nilai `850` saat sangat kering, dan `350` saat terendam air. Kita ingin mengonversi nilai `850-350` ini menjadi persentase `0-100%`.
constrain().Fungsi constrain(x, a, b) akan memaksa nilai x agar selalu berada di antara a dan b.
Saat kode program robotikamu mencapai ratusan baris, menaruh semuanya di dalam fungsi loop()seperti melempar semua barang di kamar ke dalam satu keranjang: sangat sulit untuk mencari barang yang spesifik!
Modularisasi adalah memecah program menjadi fungsi-fungsi kecil (modul) yang memiliki satu tugas spesifik. Ini seperti menaruh pakaian di lemari pakaian, buku di rak buku, dan sepatu di rak sepatu.
Sering kali kita menggunakan pin yang sama berkali-kali di program (misalnya Pin 13). Alih-alih menulis angka 13 di mana-mana, kita bisa memberikan "nama" untuk nilai tersebut agar lebih mudah dibaca dan diedit jika nanti pinnya berubah.
#define NAMA_PIN 13 : Tidak memakan memori RAM sama sekali, diganti oleh pre-processor sebelum di-compile.const int namaPin = 13; : Memiliki tipe data jelas, memakan sedikit memori tapi lebih aman dari sisi tipe data.Sekarang, mari kita gabungkan semuanya! Kita akan membuat program lengkap untuk memantau suhu (DHT11) dan kelembaban tanah (Soil Moisture). Program ini akan sangat bersih karena kita menggunakan konstanta,fungsi map/constrain, dan modularisasi.
Solusi:Pastikan library DHT sudah terinstall di Arduino IDE dan #include <DHT.h> ditulis dengan benar.
Solusi:Ubah angka '850' dan '350' pada fungsi map() sesuai dengan nilai mentah sensor kalian saat dicelupkan ke air dan ditaruh di udara kering.
Diberikan kode berikut yang masih berantakan. Tugas kalian adalah:
#define untuk pin sensor (A1) dan pin LED (10).int bacaCahaya().map() dan constrain() pada fungsi tersebut agar mengembalikan nilai `0-100%`.Luangkan 2–3 menit untuk menjawab pertanyaan di bawah secara jujur.
Apa yang paling mengejutkan atau menarik hari ini?
Apakah kamu pernah mengalami error karena salah tulis angka pin berulang-ulang?
Apa yang masih membingungkan atau ingin kamu pahami lebih dalam?
Bagian mana dari konsep modularisasi yang masih terasa membingungkan?
Apa yang ingin kamu coba atau pelajari minggu depan?
Cobalah untuk mulai membuat fungsi setup() dan loop() kosong, dan tulis fungsi-fungsi kalian di bawahnya sebelum diisi kode detail.
Refleksi tidak dinilai — ini adalah ruang jujurmu untuk berpikir.