#3初級

信号機

4.8(130)
384 完了
信号機
毎日道路で見かける信号機の小さな模型です。赤が2秒点灯し、黄が一瞬点灯した後、緑が2秒点灯します。その後、再び黄を経て赤に戻り、この動作を繰り返します。3個のLEDを順番に点けたり消したりしながら、タイミングの組み立て方を学びます。

動画

回路図

信号機 - Circuit

ソースコード

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Traffic Light
4// ─────────────────────────────────────────
5// Traffic light cycle with red, yellow and green LEDs: red 2 s, yellow 0.3
6// s, green 2 s, yellow 0.3 s, then it starts over.
7//
8// Pins:
9//   D2 -> Red LED
10//   D3 -> Yellow LED
11//   D4 -> Green LED
12//   Each LED with a 330 ohm resistor
13
14void setup() {
15  pinMode(2,OUTPUT);    // Red
16  pinMode(3,OUTPUT);    // Yellow
17  pinMode(4,OUTPUT);    // Green
18}
19
20void loop() {
21  // Red on, wait 2 s
22  digitalWrite(2,HIGH);
23  digitalWrite(3,LOW);
24  digitalWrite(4,LOW);
25  delay(2000);
26  // Yellow on, wait 0.3 s
27  digitalWrite(2,LOW);
28  digitalWrite(3,HIGH);
29  digitalWrite(4,LOW);
30  delay(300);
31  // Green on, wait 2 s
32  digitalWrite(2,LOW);
33  digitalWrite(3,LOW);
34  digitalWrite(4,HIGH);
35  delay(2000);
36  // Yellow on, then back to red
37  digitalWrite(2,LOW);
38  digitalWrite(3,HIGH);
39  digitalWrite(4,LOW);
40  delay(300);
41}
42

よくある質問

信号機の黄色はどのくらい点灯させればよいですか?▾

実際の信号機では、黄色は通常3〜4秒点灯します。このプロジェクトでは`delay()`で時間を設定します。赤と緑を長く、黄を短くすると、実際に近い点灯サイクルになります。

220 Ωではなく330 Ωの抵抗を使うのはなぜですか?▾

330 Ωにすると電流が少し減り、約9–10 mAになります。LEDは十分に見える明るさを保ちつつ、ピンから流れる電流の合計を抑えられます。220 Ωでも動作し、その場合はLEDが少し明るくなります。

歩行者用の押しボタンを追加できますか?▾

はい。押しボタンと10 kΩのプルダウン抵抗を追加し、`digitalRead`で状態を読み取れます。ボタンが押されたら赤に切り替え、歩行者用の緑のLEDを別に点灯させることができます。`delay`の代わりに`millis()`を使うと、ボタン操作をすぐに検出できます。

LEDの点灯順序が違います。どうすればよいですか?▾

コード内のピン定義(赤・黄・緑)と回路の配線を1本ずつ照らし合わせてください。各LEDを個別のテストコードで点灯させ、どのピンにつながっているか確認するのが簡単です。