#108Pemula

LED Knight Rider ESP32

6 LED yang bergerak berurutan dari kiri ke kanan dan dari kanan ke kiri (gaya Knight Rider). Contoh dasar penggunaan loop for dan array. Mengajarkan logika perubahan arah.

4.5(19)
32 selesai
LED Knight Rider ESP32
Cahaya yang berlari dari satu ujung ke ujung lainnya lalu kembali, seolah kamu memantulkan bola di sepanjang barisan LED. ESP32 menyalakan enam LED satu per satu dari kiri ke kanan, lalu kembali dengan cara yang sama dari kanan ke kiri, dan gerakan bolak-balik itu tidak pernah berhenti. Proyek mudah ini mengajarkan cara menggerakkan beberapa lampu dengan satu pola.

Video

Skema rangkaian

LED Knight Rider ESP32 - Circuit

Kode sumber

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   LED Knight Rider ESP32
4// ─────────────────────────────────────────
5// 6 LED menyala satu per satu dari kiri ke kanan, lalu kembali dari kanan
6// ke kiri (efek Knight Rider). Menunjukkan array dan loop for dua arah.
7//
8// Pin:
9//   GPIO 5, 18, 19, 21, 22, 23 -> 6 LED (berurutan)
10//   Setiap LED dengan resistor 330 ohm, katode ke GND
11
12const int LED_PINS[] = {5, 18, 19, 21, 22, 23};   // Pin LED, berurutan
13const int LED_COUNT = 6;                          // Jumlah LED
14const int DELAY_MS = 100;                         // Waktu nyala per LED (ms)
15
16void setup() {
17  // Atur semua pin LED sebagai output
18  for (int i = 0; i < LED_COUNT; i++) {
19    pinMode(LED_PINS[i], OUTPUT);
20  }
21}
22
23void loop() {
24  // Kanan
25  for (int i = 0; i < LED_COUNT; i++) {
26    digitalWrite(LED_PINS[i], HIGH);
27    delay(DELAY_MS);
28    digitalWrite(LED_PINS[i], LOW);
29  }
30  // Kiri: LED di ujung dilewati agar pantulannya terlihat mulus
31  for (int i = LED_COUNT - 2; i >= 1; i--) {
32    digitalWrite(LED_PINS[i], HIGH);
33    delay(DELAY_MS);
34    digitalWrite(LED_PINS[i], LOW);
35  }
36}
37

FAQ

Apakah arus ESP32 cukup untuk 6 LED?

Arus yang disarankan untuk setiap GPIO sekitar 20 mA; dengan resistor 330 Ω, setiap LED menarik 3–5 mA. Karena hanya satu LED yang menyala pada satu waktu, total arusnya sangat kecil.

Kenapa kita menyimpan pin di array?

Karena nomor pinnya tidak berurutan (5, 18, 19, 21, 22, 23), memakai array memudahkan mengaksesnya satu per satu di dalam loop. Ketika menambah LED, perbarui array LED_PINS sekaligus LED_COUNT; untuk hanya mengubah urutan, mengubah array sudah cukup.

Bisakah aku mempercepat efeknya?

Perkecil nilai delay() di antara langkah. Nilai antara 40 dan 80 ms menghasilkan efek "Knight Rider" yang halus.

Bisakah aku memakai LED strip sebagai pengganti LED?

Bisa, dengan strip addressable WS2812B (NeoPixel), kamu bisa menggerakkan ratusan LED dari satu pin dan membuat masing-masing menyala dengan warna berbeda. Untuk strip yang panjang, dibutuhkan catu daya 5 V terpisah.