はじめに
信号機を作ってみたいと思ったことはありませんか?しかし、手元に部品がないという方もいるでしょう。Velxioを使えば、ブラウザ上でArduinoベースの信号機全体をシミュレートできます。このプロジェクトでは、Arduino Unoに接続した3つのLED(赤、黄、緑)を使って、古典的な信号機のシーケンス(赤→黄→緑→黄→赤)を再現します。デジタル出力、タイミング、順序論理を学ぶのに最適な初心者向けプロジェクトです。
回路の解説
回路を見てみましょう。以下の図は完全な配線を示しています。

部品
- Arduino Uno – 動作の頭脳。
- 赤色LED – デジタルピン13に接続。
- 黄色LED – デジタルピン12に接続。
- 緑色LED – デジタルピン11に接続。
- 抵抗 – 各LEDには、アノードに直列に電流制限抵抗(通常220Ω)が必要です。Velxioでは、内蔵LEDにすでに内部抵抗が含まれているため、手動で追加する必要はありません。
配線の詳細
各LEDには2本の足があります:アノード(長い方の足、ピン「A」と表示)とカソード(短い方の足、ピン「C」と表示)。配線は簡単です:
- 赤色LED: アノードを赤い線(
#ff0000)でArduinoのピン13に接続。カソードを黒い線でArduinoのGNDに接続。 - 黄色LED: アノードを黄色い線(
#ffaa00)でArduinoのピン12に接続。カソードをGNDに接続。 - 緑色LED: アノードを緑の線(
#00ff00)でArduinoのピン11に接続。カソードをGNDに接続。
3つのLEDはすべてArduino上の同じGND接続を共有します。これは共通グランド構成です。
コードの解説
次に、ライトを変化させるコードを見てみましょう。Velxioでコードエディターを開きます:

// Traffic Light Simulator
// Red -> Yellow -> Green -> Yellow -> Red
const int RED_PIN = 13;
const int YELLOW_PIN = 12;
const int GREEN_PIN = 11;
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(YELLOW_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
}
void loop() {
// Red light
digitalWrite(RED_PIN, HIGH);
delay(3000);
digitalWrite(RED_PIN, LOW);
// Yellow light
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
// Green light
digitalWrite(GREEN_PIN, HIGH);
delay(3000);
digitalWrite(GREEN_PIN, LOW);
// Yellow light again
digitalWrite(YELLOW_PIN, HIGH);
delay(1000);
digitalWrite(YELLOW_PIN, LOW);
}
動作の仕組み
- ピン定義: 3つのピンに定数を定義します:
RED_PIN = 13、YELLOW_PIN = 12、GREEN_PIN = 11。これらは配線と一致します。 - セットアップ:
setup()内で、pinMode()を使って3つのピンをすべてOUTPUTに設定します。これにより、Arduinoがこれらのピンから電圧を出力するよう指示します。 - ループ:
loop()関数は永久に実行されます。次のシーケンスに従います:- 赤色LEDをオン(
HIGH)にし、3秒待ち、オフ(LOW)にします。 - 黄色LEDをオンにし、1秒待ち、オフにします。
- 緑色LEDをオンにし、3秒待ち、オフにします。
- 再び黄色LEDをオンにし、1秒待ち、オフにします。
- その後、ループは赤色ライトから繰り返されます。
- 赤色LEDをオン(
これにより、おなじみの信号機パターンが作成されます。
学習者向けの重要な概念
- デジタル出力:
digitalWrite(pin, HIGH)はピンを5V(オン)に設定し、LOWは0V(オフ)に設定します。 delay()によるタイミング:delay(ミリ秒)はプログラムを一時停止します。注意:delay()が実行されている間、Arduinoは他の処理を実行できません。- 順序論理: 操作の順序が重要です。コードは1行ずつ実行されるため、ライトは予測可能な順序で変化します。
- 共通グランド: すべてのLEDが同じグランド接続を共有します。これはデジタル回路では一般的です。
よくある落とし穴とデバッグのヒント
- ピン番号の間違い: コード内のピン番号が配線と一致しているか再確認してください。赤色LEDがピン13にあるのにコードで
12と書いてあると、点灯しません。 - LEDの向き: LEDには極性があります。アノード(長い方の足)はArduinoのピンに、カソード(短い方の足)はGNDに接続する必要があります。Velxioでは、LEDコンポーネントはデフォルトで正しい向きになっています。
- 抵抗の欠落: 実際の回路では、各LEDに直列に電流制限抵抗(220Ω~1kΩ)を必ず使用して、損傷を防いでください。Velxioの内蔵LEDには抵抗が含まれていますが、カスタムコンポーネントを使用する場合は追加してください。
delay()のブロッキング: 後でボタンやセンサーを追加したい場合、delay()はプログラムを停止させます。ノンブロッキングなタイミングにはmillis()の使用を検討してください。
推奨される拡張機能
基本的な信号機が動作したら、次の拡張を試してみてください:
- 歩行者用ボタンを追加: 押しボタンを使用して歩行者信号を要求します。押されると、信号機が赤に変わり、白色LED(歩行者用通行)が点灯します。
delay()の代わりにmillis()を使用: タイミングにmillis()を使用するようにコードを書き換えます。これにより、待機中にArduinoがボタン押下をチェックできるようになります。- ブザーを追加: 圧電ブザーをピンに接続し、緑色ライトが黄色に変わる直前になると鳴るようにします。
- 横断歩道をシミュレート: 歩行者用横断用に2つのLED(赤と緑)を追加し、信号機と連動させます。
自分で試してみよう
自分だけの信号機を作る準備はできましたか?Velxioでサンプルを開いて、実験を始めましょう:
コードを編集したり、タイミングを変更したり、LEDを追加したりできます。シミュレーターはブラウザ上で完全に動作します。ダウンロードもハードウェアも不要です。ツールバーを使用してコードをコンパイルして実行しましょう:


新しいコンポーネントを追加する必要がある場合は、コンポーネントピッカーを開きます:

また、ライブラリを使用したい場合は、ライブラリマネージャーがすぐに利用できます:

楽しいシミュレーションを!