#107初級

ESP32の信号機

赤・黄・緑の3個のLEDで、実際の信号機を再現します。赤は長く、黄は短く、緑は長く点灯させ、実際の信号機に近いタイミングで動かします。GPIOを順番に制御する基本例です。

4.4(21)
44 完了
ESP32の信号機
街の信号機を小さく再現します。赤が3秒間点灯した後、赤と黄が同時に点灯して、緑に変わることを知らせます。緑が3秒間点灯すると、黄が短く点灯し、再び赤に戻ります。ESP32にLED3個と抵抗3個を接続するだけで作れます。

動画

回路図

ESP32の信号機 - Circuit

ソースコード

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   ESP32 Traffic Light
4// ─────────────────────────────────────────
5// A traffic light cycle with red, yellow and green LEDs: red 3 s, red +
6// yellow 0.8 s, green 3 s, yellow 0.8 s.
7//
8// Pins:
9//   GPIO 5  -> Red LED
10//   GPIO 18 -> Yellow LED
11//   GPIO 19 -> Green LED
12//   Each LED with a 220 ohm resistor, cathodes to GND
13
14const int RED = 5;      // Red LED pin
15const int YELLOW = 18;  // Yellow LED pin
16const int GREEN = 19;   // Green LED pin
17
18void setup() {
19  pinMode(RED, OUTPUT);
20  pinMode(YELLOW, OUTPUT);
21  pinMode(GREEN, OUTPUT);
22}
23
24void loop() {
25  // Red
26  digitalWrite(RED, HIGH);
27  digitalWrite(YELLOW, LOW);
28  digitalWrite(GREEN, LOW);
29  delay(3000);
30
31  // Red + Yellow
32  digitalWrite(YELLOW, HIGH);
33  delay(800);
34
35  // Green
36  digitalWrite(RED, LOW);
37  digitalWrite(YELLOW, LOW);
38  digitalWrite(GREEN, HIGH);
39  delay(3000);
40
41  // Yellow
42  digitalWrite(GREEN, LOW);
43  digitalWrite(YELLOW, HIGH);
44  delay(800);
45  digitalWrite(YELLOW, LOW);
46}
47

よくある質問

Arduinoの信号機のコードとは何が違いますか?▾

仕組みは同じで、ESP32に合わせてピン番号だけを変更します。出力が3.3 VなのでLEDが少し暗くなることがあります。明るくしたい場合は100–150 Ωの抵抗を使えます。

スマートフォンから信号機を操作できますか?▾

はい。ESP32のWi-Fi機能で小さなウェブサーバーを作り、ブラウザーから点灯状態を変更できます。これはESP32とArduinoを分ける最大の特徴です。

点灯時間を実際の信号機に近づけるにはどうすればよいですか?▾

実際の交差点では、緑と赤は20–60秒、黄は3–4秒点灯します。試すときは待ち時間を短くし、発表時には実際の長さに設定できます。

どのピンを選べばよいですか?▾

GPIO 25、26、27のように、起動時に特別な役割を持たないピンを選んでください。GPIO 0、2、12、15は起動モードに影響するため、接続した回路によってボードが起動しなくなることがあります。