Materi & LKPD · Pertemuan 13

Perintah Pin Analog I/O

Dunia nyata tidak selalu ON/OFF — suhu, cahaya, kelembapan berubah bertingkat. Pin analog adalah jembatan antara dunia bertingkat itu dengan program digital kita.

⏱ 3 JP 🎯 Kendali Analog 📘 Buku hlm. 77 🧩 Kode TP TP.12.4.2
Materi

analogRead() dan analogWrite()

Kenapa Butuh Analog?

Pin digital hanya kenal dua nilai: HIGH atau LOW. Tapi suhu ruangan tidak "loncat" dari dingin ke panas — dia bertingkat. Pin analog membaca nilai bertingkat ini, biasanya dalam rentang 0–1023 (10-bit).

analog_io.inoC (Arduino)
void loop() {
  int nilaiCahaya = analogRead(A0); // 0 (gelap) - 1023 (terang)
  Serial.println(nilaiCahaya);

  int kecerahanLED = map(nilaiCahaya, 0, 1023, 0, 255);
  analogWrite(9, kecerahanLED); // atur kecerahan LED (0-255)
}
  • analogRead(pin) — membaca nilai bertingkat dari pin analog (A0-A5).
  • analogWrite(pin, value) — mengirim nilai bertingkat (0-255) lewat teknik PWM, cocok untuk mengatur kecerahan LED atau kecepatan motor.
  • map() — fungsi bantu mengubah rentang angka satu ke rentang lain.

Resolusi ADC: Arduino Uno vs ESP32

Arduino Uno punya ADC 10-bit, jadi analogRead() menghasilkan nilai 0–1023. ESP32 (yang dipakai untuk proyek IoT kalian) punya ADC 12-bit, jadi rentangnya lebih halus: 0–4095. Ini penting saat memakai map() — batas atas harus disesuaikan dengan board yang dipakai, kalau tidak, hasil konversi jadi salah total.

esp32_adc.inoC (ESP32)
int nilaiSensor = analogRead(34);         // 0 - 4095 pada ESP32
float tegangan = (nilaiSensor / 4095.0) * 3.3; // konversi ke volt
int pwmOutput = map(nilaiSensor, 0, 4095, 0, 255);

PWM: "Analog Palsu" yang Berguna

analogWrite() sebenarnya tidak mengeluarkan tegangan bertingkat sungguhan — dia menyalakan-mematikan pin sangat cepat (Pulse Width Modulation). Semakin lama pin "menyala" dalam satu siklus (duty cycle), semakin terang LED terlihat oleh mata kita, walau sebenarnya berkedip sangat cepat.

Latihan Pemahaman

Uji Pemahaman — 15 Soal

Campuran pilihan ganda biasa, kompleks, dan dua tingkat — mengikuti kerangka kognitif C1–C3 ala PISA. Mode layar penuh aktif, jangan berpindah tab selama mengerjakan.

Lembar Kerja Peserta Didik

LKPD Pertemuan 13

Isi identitas dan jawaban, lalu unduh sebagai PDF untuk dikumpulkan.

1. Sensor mana di proyek kelompokmu yang butuh pin analog? Jelaskan alasannya.
2. Tulis contoh penggunaan map() yang relevan dengan kebutuhan proyekmu.
3. Sebuah sensor LDR terhubung ke pin analog ESP32 (ADC 12-bit) dan menghasilkan nilai 2048. Hitung tegangan yang terbaca jika tegangan referensi 3.3V. Tunjukkan cara hitungmu.
4. Jelaskan perbedaan resolusi ADC Arduino Uno (10-bit) dan ESP32 (12-bit), serta dampaknya terhadap ketelitian pembacaan sensor pada proyek IoT kalian.
5. Rancang potongan kode (pseudocode atau kode Arduino/ESP32) yang membaca sensor cahaya lalu mengatur kecerahan LED secara terbalik: makin gelap ruangan, makin terang LED. Jelaskan logikanya.