
警察車両の警光灯のように、赤いLEDが素早く3回点滅し、続いて青いLEDが3回点滅します。このパターンを途切れることなく繰り返します。Arduinoに2個のLEDと2個の抵抗をつなぐだけで、数分で組み立てられる、目を引く入門プロジェクトです。
動画
回路図

ソースコード
Arduino (C++)
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// LED Police Lights
4// ─────────────────────────────────────────
5// The red and blue LEDs each flash 3 times quickly in turn, creating a
6// police strobe effect. Shows for loops and timing control.
7//
8// Pins:
9// D2 -> Red LED
10// D3 -> Blue LED
11// Each LED with a 330 ohm resistor
12
13// Flash time (ms). A smaller value flashes faster
14int delayTime = 60;
15
16void setup() {
17 pinMode(2,OUTPUT); // Red
18 pinMode(3,OUTPUT); // Blue
19}
20
21void loop() {
22 // Red LED flashes 3 times
23 for(int i=0;i<3;i++){
24 digitalWrite(2,HIGH);
25 delay(delayTime);
26 digitalWrite(2,LOW);
27 delay(delayTime);
28 }
29
30 // Blue LED flashes 3 times
31 for(int i=0;i<3;i++){
32 digitalWrite(3,HIGH);
33 delay(delayTime);
34 digitalWrite(3,LOW);
35 delay(delayTime);
36 }
37}
38
よくある質問
点滅をもっと本物らしくするにはどうすればよいですか?▾
実際の警光灯は、それぞれの色で短い点滅を数回繰り返します。`for`ループで一方のLEDを素早く3回点滅させてから(例:50 ms点灯、50 ms消灯)もう一方に切り替えると、警光灯によく似た動きになります。
赤と青のLEDには同じ抵抗を使えますか?▾
動作しますが、明るさに差が出ます。青いLEDの順方向電圧(約3.2 V)は赤いLED(約1.9 V)より高いため、同じ抵抗値では青いLEDに流れる電流が少なくなります。明るさをそろえるには、青いLEDの抵抗値を小さくします。LED抵抗の計算ツールで計算できます。
ここでの「for」ループは何のために使いますか?▾
同じ点滅パターンを決まった回数だけ繰り返すために使います。コードを何度もコピーして貼り付ける代わりに、`for (int i = 0; i < 3; i++)`と書けば、繰り返しを1か所で制御できます。
もっと明るく点滅させるには何を使えばよいですか?▾
Unoのピンから流れる電流が20 mAを超えないように回路を設計してください。ピンには、電流を自動的にこの値に制限する機能はありません。より強力なLEDやLEDテープを使う場合は、負荷電流に対応したトランジスタまたはMOSFETと、適切な別電源で駆動する必要があります。大きな電流が流れる負荷をピンに直接つながないでください。
