#8Menengah

Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur

4.5(60)
120 selesai
Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur
Cahaya berlari dari satu ujung enam LED ke ujung lainnya, berbalik, lalu berlari kembali. Putar kenop potensiometer dan kamu langsung mengubah kecepatan larinya: dengan kenop di satu ujung cahayanya hampir terbang, di ujung lain cahayanya melangkah santai. Di sinilah kamu merasakan serunya mengendalikan animasi hidup dengan satu kenop.

Video

Skema rangkaian

Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur - Circuit

Kode sumber

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur
4// ─────────────────────────────────────────
5// Potensiometer mengatur kecepatan efek LED Knight Rider (maju mundur). A0
6// dibaca di setiap langkah dan nilai 0-1023-nya menjadi waktu delay (ms).
7//
8// Pin:
9//   D2, D3, D4, D5, D6, D7 -> 6 LED (berurutan)
10//   Setiap LED dengan resistor 330 ohm
11//   A0 -> Wiper potensiometer
12//   (kaki luar ke 5V dan GND)
13
14int ledPins[] = {2, 3, 4, 5, 6, 7};   // Pin LED sesuai urutan nyala
15int potValue;                         // Nilai pot = delay (ms)
16
17void setup() {
18  // Atur semua pin LED sebagai output
19  for(int i = 0; i < 6; i++) {
20    pinMode(ledPins[i], OUTPUT);
21  }
22}
23
24void loop() {
25  // Maju: D2 ke D7
26  for(int i = 0; i < 6; i++) {
27    potValue = analogRead(A0);        // Baca kecepatan (0-1023)
28    digitalWrite(ledPins[i], HIGH);
29    delay(potValue);                  // Tunggu sebanyak ms nilai pot
30    digitalWrite(ledPins[i], LOW);
31  }
32
33  // Mundur: D6 ke D3. LED di ujung dilewati agar pantulannya terlihat mulus
34  for(int i = 4; i > 0; i--) {
35    potValue = analogRead(A0);
36    digitalWrite(ledPins[i], HIGH);
37    delay(potValue);
38    digitalWrite(ledPins[i], LOW);
39  }
40}
41

FAQ

Apa yang diajarkan proyek ini yang berbeda dari proyek sebelumnya?

Proyek ini menggabungkan input analog (potensiometer) dengan loop dua arah: ketika cahaya bergerak bolak-balik, potensiometer dibaca di setiap langkah dan nilainya langsung dipakai untuk jeda berikutnya. Inilah dasar untuk mengubah perilaku berdasarkan nilai sensor.

Bacaannya naik-turun, bagaimana menstabilkannya?

Fluktuasi kecil pada pembacaan analog itu normal. Merata-ratakan beberapa bacaan atau memakai fungsi `map()` untuk membagi nilainya ke interval yang lebih kasar (mis. kelipatan 10 milidetik) menyamarkan fluktuasi itu.

Bisakah aku memakai sensor lain sebagai pengganti potensiometer?

Bisa, kamu bisa memakai LDR, tetapi LDR tidak menghasilkan output tegangan sendiri. Buat pembagi tegangan dengan LDR dan resistor tetap di antara 5 V dan GND, lalu sambungkan titik tengahnya ke A0. Setelah itu kamu bisa memakai `map()` di kode untuk mengubah rentang yang terukur menjadi rentang jeda yang kamu inginkan.

Pin analog mana yang sebaiknya aku pakai?

Di Uno, semua pin dari A0 sampai A5 bisa dipakai untuk pembacaan analog. Pastikan pin yang kamu pakai di kode sama dengan sambungan di rangkaian; karena A4 dan A5 juga dipakai untuk I2C, pilih A0 jika kamu berencana menambahkan layar nanti.