#6中級

Knight Rider風LED

4.8(106)
201 完了
Knight Rider風LED
Knight Riderでおなじみの、光が左右に往復する動きです。6個のLEDの上を光の点が端から端へ進み、折り返します。Arduinoが各LEDを10分の1秒ずつ点灯させ、端に着くたびに向きを変えて往復し続けます。装飾用の照明や警告灯作りの第一歩にぴったりです。

動画

回路図

Knight Rider風LED - Circuit

ソースコード

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Knight Rider LED Effect
4// ─────────────────────────────────────────
5// The 6 LEDs light up one by one forward, then backward (Knight Rider
6// effect). Shows bidirectional for loop logic.
7//
8// Pins:
9//   D2, D3, D4, D5, D6, D7 -> 6 LEDs (in order)
10//   Each LED with a 330 ohm resistor
11
12int ledPins[] = {2, 3, 4, 5, 6, 7};   // LED pins in lighting order
13
14void setup() {
15  // Set all LED pins as outputs
16  for(int i = 0; i < 6; i++) {
17    pinMode(ledPins[i], OUTPUT);
18  }
19}
20
21void loop() {
22  // Forward: D2 to D7, 100 ms per LED
23  for(int i = 0; i < 6; i++) {
24    digitalWrite(ledPins[i], HIGH);
25    delay(100);
26    digitalWrite(ledPins[i], LOW);
27  }
28
29  // Backward: D6 to D3. The end LEDs are skipped so the bounce looks seamless
30  for(int i = 4; i > 0; i--) {
31    digitalWrite(ledPins[i], HIGH);
32    delay(100);
33    digitalWrite(ledPins[i], LOW);
34  }
35}
36

よくある質問

Knight Rider風の動きはどう作りますか?▾

LEDを最初は左から右へ、次に右から左へ順番に点灯させます。2つの「for」ループを続けて実行し、2つ目のループでは逆順に数えることで、光が往復します。

両端のLEDが2回点灯するように見えます。どう直せばよいですか?▾

戻るループで端のLEDをもう一度点灯させると、そのLEDは2ステップ分点灯したままになります。戻るループのインデックスを1つずらして(例:4から1まで)実行すると、両端での重複を防げます。

速さはどう調整しますか?▾

各ステップの間にあるdelay()の値を変えてください。30–80 msにすると滑らかな動きになります。動作中に速さを変えたい場合は、次のプロジェクト「速度調整できるKnight Rider風LED」のようにポテンショメーターを追加できます。

LEDをもっと増やせますか?▾

はい。ピンの配列に新しいピンを追加し、ループの範囲を更新するだけです。Unoには自由に使えるデジタルピンが12本あります。さらに増やすには、74HC595シフトレジスタを使うと、3本のピンだけで8個以上のLEDを駆動できます。