Menyalakan LED Saat Tombol Ditekan

Pelajari cara mengontrol LED menggunakan Push Button pada Arduino Uno R3 dengan metode INPUT_PULLUP. Panduan pemula ini mencakup konfigurasi pinout hardware, kode program C++ Active LOW yang optimal, simulator interaktif real-time, serta tiga tantangan praktikum terstruktur untuk menguji pemahaman logika digital mikrokontroler Anda secara langsung.

PEMULA • 15 MENIT

Push Button #1 — Menyalakan LED Saat Tombol Ditekan

Pelajari cara membaca input digital dari Push Button menggunakan internal resistor INPUT_PULLUP pada Arduino Uno R3. Melalui proyek ini, Anda akan memahami konsep logika pembacaan sinyal digital (Active LOW) untuk mengontrol komponen output seperti LED.

1. Konfigurasi Rangkaian (Pinout)

Komponen Pin Arduino Uno Keterangan
Push Button (Kaki 1) Pin 2 Digital Input (Internal Pull-Up)
Push Button (Kaki 2) GND Ground
LED (Anoda) Pin 13 Digital Output (LED Built-in)
LED (Katoda) GND Ground

2. Kode Program (C++)

// Definisi Pin
const int BUTTON_PIN = 2;
const int LED_PIN    = 13;

void setup() {
  // Mengaktifkan Pull-up Resistor Internal pada Pin 2
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  
  // Mengatur Pin 13 sebagai Output
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // Membaca status tombol (HIGH / LOW)
  int buttonState = digitalRead(BUTTON_PIN);

  // Logika Active LOW: Tombol ditekan = LOW
  if (buttonState == LOW) {
    digitalWrite(LED_PIN, HIGH); // LED Nyala
  } else {
    digitalWrite(LED_PIN, LOW);  // LED Mati
  }
}

3. Simulasi Interaktif

Simulasi Real-Time Sinyal & Hardware
LED (Pin 13)
Push Button (Pin 2)
digitalRead(2): HIGH (1) [Pull-Up]
digitalWrite(13): LOW (0)
Status Fisik LED: MATI (OFF)

4. Tantangan Praktikum

Tantangan 1: Pembalikan Logika (Active HIGH)

Ubah logika program agar LED justru menyala saat tombol dilepas, dan mati saat tombol ditekan.

Tantangan 2: Saklar Toggle (On / Off Persistent)

Modifikasi kode agar sekali tombol ditekan LED akan terus menyala. LED baru akan mati jika tombol ditekan kembali untuk kedua kalinya.

Share:

RGB LED dengan Perulangan For — Arduino Uno R3

Pelajari cara mengendalikan LED RGB menggunakan perulangan `for()` pada Arduino Uno R3. Melalui proyek sederhana ini, Anda akan memahami perubahan intensitas warna secara bertahap menggunakan PWM, sekaligus mengenal konsep dasar perulangan dalam C++. Cocok bagi pemula yang ingin membangun fondasi pemrograman mikrokontroler dengan praktik langsung.

Pemula · 20 menit

RGB LED dengan Perulangan for — Arduino Uno R3

Membuat LED RGB bertransisi halus dari merah → hijau → biru → merah menggunakan tiga blok for dan analogWrite().

01Alat & Rangkaian

LED RGB yang dipakai di sini tipe common cathode (kaki terpanjang = GND). Kalau LED-mu tipe common anode, tinggal ganti nilai 255 - i menjadi i dan sebaliknya pada kode di bawah.

  • Pin 9→ resistor 220Ω → kaki Merah (R)
  • Pin 10→ resistor 220Ω → kaki Hijau (G)
  • Pin 11→ resistor 220Ω → kaki Biru (B)
  • GND→ kaki common cathode (kaki terpanjang)
CatatanPin 9, 10, 11 dipilih karena bertanda "~" — pin PWM yang bisa dipakai analogWrite() untuk mengatur kecerahan tiap warna dari 0–255.

02Kode Program

Logikanya: setiap transisi warna (misal merah→hijau) dilakukan dengan satu for yang berjalan i = 0 sampai 255. Selama loop, satu channel diturunkan (255 - i) sementara channel berikutnya dinaikkan (i) — hasilnya warna berbaur secara halus.

#define redPin 9
#define greenPin 10
#define bluePin 11

void setup() {
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  // Merah -> Hijau
  for (int i = 0; i <= 255; i++) {
    analogWrite(redPin, 255 - i);
    analogWrite(greenPin, i);
    delay(10);
  }
  // Hijau -> Biru
  for (int i = 0; i <= 255; i++) {
    analogWrite(greenPin, 255 - i);
    analogWrite(bluePin, i);
    delay(10);
  }
  // Biru -> Merah
  for (int i = 0; i <= 255; i++) {
    analogWrite(bluePin, 255 - i);
    analogWrite(redPin, i);
    delay(10);
  }
}
  • #defineMemberi nama ke nomor pin supaya kode gampang dibaca — redPin jelas maksudnya dibanding angka 9 polos.
  • for (int i…)Variabel i naik dari 0 ke 255, dipakai sebagai nilai kecerahan sekaligus penghitung langkah transisi.
  • 255 - iTrik supaya satu channel meredup persis saat channel lain menyala, sehingga warnanya berbaur alih-alih berkedip.
  • delay(10)Jeda 10ms tiap langkah — total satu transisi memakan waktu ±2.5 detik (256 × 10ms). Perkecil angka ini untuk transisi lebih cepat.

03Simulasi

Simulasi di bawah menjalankan logika for yang sama persis seperti kode di atas — bukan animasi acak.

rgb(0,0,0)
R
0
G
0
B
0
// Merah -> Hijau, i = 0

04Tantangan

Coba kerjakan tanpa lihat contoh dulu — pakai simulasi di atas untuk mengecek dugaanmu sebelum diunggah ke board asli.

  1. Tambahkan jeda 500ms setiap kali warna mencapai murni (merah, hijau, atau biru penuh) sebelum lanjut ke transisi berikutnya.
  2. Ganti delay(10) dengan nilai dari potensiometer di pin A0 (pakai analogRead() lalu map() ke rentang 1–40ms), supaya kecepatan transisi bisa diatur langsung dari rangkaian.
  3. Tambahkan sebuah push button di pin 2: selama tombol ditekan, transisi warna berhenti (freeze) di warna saat itu.
  4. Coba ganti salah satu baris analogWrite(redPin, 255 - i) menjadi analogWrite(redPin, -(255 - i)), unggah ke board, lalu amati LED-nya. Bandingkan dengan penjelasan soal nilai negatif PWM di atas — apakah hasilnya sesuai dugaanmu?
  5. Buat urutan warna baru yang melewati ungu (campuran merah + biru) sebelum kembali ke merah, jadi total ada 4 transisi bukan 3.
Handout ini boleh disalin ulang untuk keperluan belajar/mengajar.
Share:

RGB LED Menggunakan for()

📄 HANDOUT PRAKTIKUM MIKROKONTROLER

Kontrol Gradasi Warna RGB LED Menggunakan Perulangan for()

📍 Target: Arduino UNO R3 💡 LED: Common Cathode ⚡ Resistor: 220 Ω 💻 Bahasa: C++

🎯 Tujuan Pembelajaran

  1. Memahami karakteristik & pengabelan LED RGB tipe Common Cathode (Katoda Bersama).
  2. Memahami prinsip kerja sinyal Pulse Width Modulation (PWM) pada Arduino.
  3. Mengimplementasikan fungsi perulangan for() dalam C++ untuk efek transisi warna (*fading*).

🛠️ Alat dan Bahan

Komponen Spesifikasi / Keterangan Jumlah
Microcontroller Arduino UNO R3 1 Unit
Output Utama LED RGB Common Cathode 1 Pcs
Komponen Pasif Resistor 220 Ohm (1/4 Watt) 3 Pcs
Penghubung Breadboard MB102 & Kabel Jumper M-M Secukupnya

💡 Konsep Dasar & Pengabelan (Wiring)

Pada tipe Common Cathode (CC), kaki katoda (terpanjang) dihubungkan ke GND. Pin Red, Green, dan Blue dihubungkan ke pin PWM Arduino melalui resistor limitasi 220 Ω.

Kaki LED RGB Komponen Perantara Pin Arduino UNO
Red (R) Resistor 220 Ω Pin 9 (PWM)
Katoda (Terpanjang) Koneksi Langsung GND
Green (G) Resistor 220 Ω Pin 10 (PWM)
Blue (B) Resistor 220 Ω Pin 11 (PWM)
⚠️ Catatan Sinyal PWM:
Fungsi analogWrite(pin, nilai) menerima parameter nilai 0 s.d. 255. Nilai 0 berarti tegangan 0V (mati), dan 255 berarti 5V (terang maksimum).

💻 Kode Program C++

Klik tombol Copy Code untuk menyalin kode ke **Arduino IDE**:

Arduino_RGB_ForLoop.ino
/*
  Handout Praktikum: RGB Fading dengan fungsi for()
  Board: Arduino UNO R3
  Jenis LED: Common Cathode
*/

// Deklarasi pin PWM
const int pinRed   = 9;
const int pinGreen = 10;
const int pinBlue  = 11;

void setup() {
  // Konfigurasi pin sebagai OUTPUT
  pinMode(pinRed, OUTPUT);
  pinMode(pinGreen, OUTPUT);
  pinMode(pinBlue, OUTPUT);
}

void loop() {
  // -------------------------------------------------------------
  // EFEK 1: Redup ke Terang & Terang ke Redup (Merah)
  // -------------------------------------------------------------
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinRed, i);   // Kecerahan bertambah seiring nilai i
    analogWrite(pinGreen, 0); // Warna lain mati
    analogWrite(pinBlue, 0);
    delay(10);                // Kecepatan transisi (10ms)
  }

  for (int i = 255; i >= 0; i--) {
    analogWrite(pinRed, i);
    delay(10);
  }

  // -------------------------------------------------------------
  // EFEK 2: Transisi Halus Warna Merah ke Hijau (Crossfade)
  // -------------------------------------------------------------
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinRed, 255 - i); // Merah perlahan mati (255 -> 0)
    analogWrite(pinGreen, i);     // Hijau perlahan menyala (0 -> 255)
    analogWrite(pinBlue, 0);
    delay(10);
  }

  // -------------------------------------------------------------
  // EFEK 3: Transisi Halus Warna Hijau ke Biru
  // -------------------------------------------------------------
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinRed, 0);
    analogWrite(pinGreen, 255 - i); // Hijau mati
    analogWrite(pinBlue, i);        // Biru menyala
    delay(10);
  }

  // -------------------------------------------------------------
  // EFEK 4: Transisi Halus Warna Biru kembali ke Merah
  // -------------------------------------------------------------
  for (int i = 0; i <= 255; i++) {
    analogWrite(pinRed, i);         // Merah menyala
    analogWrite(pinGreen, 0);
    analogWrite(pinBlue, 255 - i); // Biru mati
    delay(10);
  }
}

🔍 Analisis Logika Perulangan for()

for ( int i = 0 ; i <= 255 ; i++ )
  • int i = 0 : Inisialisasi variabel counter awal (i = 0).
  • i <= 255 : Syarat perulangan tetap berjalan selama nilai i ≤ 255.
  • i++ : Nilai i bertambah 1 setiap kali siklus perulangan selesai.
  • 255 - i : Membalik nilai agar kecerahan meredup secara bertahap dari 255 ke 0.

🎨 Simulasi Interaktif

Klik tombol di bawah untuk melihat simulasi efek perulangan for() pada LED RGB secara *real-time*:

Status: Standby

📝 Tugas & Latihan Mandiri

  1. Uji Kecepatan: Ubah nilai delay(10) menjadi delay(2) dan delay(50). Tuliskan perbedaannya!
  2. Warna Kuning: Buatlah satu blok perulangan for() baru yang memunculkan warna Kuning (kombinasi Merah + Hijau) secara bertahap!
  3. Analisis: Apa yang akan terjadi jika nilai variabel i dinaikkan melebihi batas 255? Jelaskan alasannya!
Share:

About

BTemplates.com