検索コード

レッスン98-6:Arduinoを使ったシーソーLEDゲーム

レッスン98-6:Arduinoを使ったシーソーLEDゲーム

シーソーLEDプロジェクトは、Arduinoプログラミングにおいて最も重要な概念の一つを学べる、定番の初心者向け演習です。それは、2つの出力を決まったリズムで交互に点灯させるというものです。2つのLED、2つの抵抗、そして数本のジャンパーワイヤーだけで、緑のLEDと赤のLEDが交代で点灯し、遊園地のシーソーが上下する動きを模した回路を作ることができます。シンプルな製作ですが、ピン定義、タイミング定数、連続したdigitalWrite()呼び出しといった、これから書くほとんどすべてのArduinoスケッチに登場する基本的な構成要素を学ぶことができます。

two LEDs with resistor on breadboard connected to Arduino
two LEDs with resistor on breadboard connected to Arduino

シーソーのパターンは、実際には「片方をオンにして、オフにして、もう片方をオンにして、オフにして、繰り返す」というだけのことなので、同じ構造は何十もの実用的な用途に応用できます。ここでは、想像力をかき立てるいくつかのアイデアを紹介します。

  • 交互点滅するインジケーターライト — 制御盤上の「安全/警告」ペアが交互に切り替わる。
  • 踏切のシミュレーション — 列車が近づくにつれて2つのランプが交互に点滅する。
  • 2車線の方向指示標識 — 私道や駐車場向けの「こちらの方向へ/あちらの方向へ」という矢印表示。
  • ホリデー装飾 — 赤と緑のLEDが入れ替わって、お祭り気分の点滅効果を生み出す。
  • 学習の基礎 — ここで身につくタイミングと順序制御のスキルは、後に信号機、歩行者用信号、複数LEDのアニメーションなどで使うものと同じです。

シーソー効果の仕組み

LEDは光を放つダイオードで、その記号は線を指す三角形で表されます。平らな線がカソード(負極)で、三角形の後ろ側がアノード(正極)です。実際のLEDでは、長い脚がアノードで、短くて平らな側面の脚がカソードです。電流はアノードからカソードへ流れるため、アノードはArduinoのピン側に、カソードは抵抗を通してグラウンドに接続します(動画の02:29)。

抵抗は重要です。一般的な小型LEDは、およそ2 Vの電圧と約10 mAの電流を必要とします。Arduinoが5 Vを供給する場合、残りの3 Vは抵抗で降下させる必要があります。オームの法則を使うと、R = V / I = 3 V / 0.01 A = 300 Ωとなります。約300 Ωから1000 Ωまでの範囲ならどれでも動作します — 値が大きいほどLEDは暗くなるだけです(動画の03:49)。

シーソーの場合、2つのLEDは同じように配線します。それぞれのアノードは各自のArduinoピンに接続し、それぞれのカソードは各自の抵抗を通して共通のグラウンドレールに接続します。2つの違いは、どのピンに接続されているかだけです。

ハードウェアと部品

  • 1 × Arduinoボード(Uno、Nano、Megaなど)
  • 2 × LED — 赤1つ、緑1つ(色はどの2色でも可)
  • 2 × 抵抗、300 Ω~1000 Ω(220 Ωや330 Ωが一般的)
  • 1 × ブレッドボード
  • ジャンパーワイヤー(デュポンワイヤー)
  • プログラミングと電源用のUSBケーブル

以上です — 押しボタンも、ポテンショメーターも、センサーもありません。これは意図的に可能な限り最小限の部品リストにしてあり、コードのロジックだけに集中できるようにしています。

配線ガイド

Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw

配線は対称的で分かりやすいです。両方のLEDをブレッドボードに挿します。緑のLEDのアノード(長い脚)をArduinoのピン2に、赤のLEDのアノードをArduinoのピン3に接続します。各カソード(短い脚)はそれぞれの抵抗の一端に接続し、両方の抵抗のもう一端はArduinoのGNDピンにつながる共通レールに接続します(動画の27:45)。

両方のLEDが同じグラウンドレールを共有しているため、ブレッドボードからArduinoへ戻るグラウンド線は1本だけで済みます。2本の信号線 — ピン2に1本、ピン3に1本 — が、2つのLED間で変わる唯一の接続です。

コードの説明

スケッチは意図的に短くしてあり、すべての行に意味があります。ここでは、実際に調整したくなる部分を紹介します。

ピン定義

const int greenLEDPin = 2;//define a pin for green LED
const int redLEDPin = 3;//define a pin for red LED

この2つの定数は、LEDがどのピンに接続されているかをArduinoに伝えます。LEDを別のピン — 例えばピン8とピン9 — に配線した場合、変更が必要なのはここだけです。constキーワードは、その値がプログラムの実行中ずっと固定され、後から誤って上書きできないことを意味します。

タイミング定数

const int ON_TIME = 500;

この単一の値が、各LEDが点灯し続ける時間をミリ秒単位で制御します。デフォルトの500は、各LEDが0.5秒間点灯することを意味するため、緑→赤の完全なサイクルは1秒かかります。高速点滅させたい場合は200に下げ、ゆっくりと意図的な1秒ごとのリズムにしたい場合は1000に上げてください(動画の30:17を参照)。両方のLEDがこの定数を共有しているため、常に同期します — シーソーはバランスを保ちます。

セットアップ

setup()内で、2つのピンがpinMode()によって出力として宣言され、シリアルモニタが9600ボーで開始されるので、LEDの状態メッセージがスクロールするのを確認できます。これはボードの電源投入時に一度だけ実行されます。

ループ

loop()関数はシーソーが行われる場所です。4つの動作を順番に実行します。緑のLEDを点灯させ、ON_TIMEミリ秒待ち、消灯し、次に赤のLEDに対して同じことを行います。ループが最後に達すると、自動的に最初からやり直します — これが「シーソー」動作のすべてです。パターンが純粋に順次的なので、状態変数もチェックする条件もありません。

ライブプロジェクトとデモンストレーション

コードをアップロードすると、緑のLEDが0.5秒間点灯し、次に赤のLED、そしてまた緑と、無限に繰り返されます。シリアルモニタを開くと(ツール → シリアルモニタ、またはCtrl+Shift+M)、パターンの実行に合わせて「Green LED ON」と「Red LED ON」が表示され、タイミングが設定した通りであることを確認する便利な方法です。

ON_TIME200に変更して再アップロードしてみてください — LEDの切り替わりが明らかに速くなります。1000に設定すると、シーソーはゆっくりとした意図的な交互点滅になります。また、ArduinoをUSBから外し、バッテリーや5 Vアダプタから電源を供給することもできます。スケッチはすでにボードのメモリに保存されているため、同じように動作します。

この動画の関連プロジェクト

チャプター

  • [00:00] 10のArduino LEDプロジェクトの概要
  • [01:22] Arduinoステップバイステップコースの紹介
  • [02:29] LEDの理解:記号、アノード、カソード
  • [03:49] オームの法則でLED直列抵抗を計算する
  • [27:32] シーソーLEDプロジェクトの紹介
  • [27:45] シーソープロジェクトの配線図
  • [28:28] シーソーコードの説明
  • [30:06] 異なるタイミングでシーソーを実演
  • [30:47] ウォーキングライトプロジェクトの概要
  • [36:41] プッシュボタンで制御するウォーキングライト
  • [42:25] ポテンショメータ付きLED電圧バーメーター
  • [49:25] Arduino信号機プロジェクト

画像

Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
330_ohm_resistor
330_ohm_resistor
Arduinoに接続されたブレッドボード上の抵抗付き2つのLED
Arduinoに接続されたブレッドボード上の抵抗付き2つのLED
938-Lessson 98-LED-6: Arduino code two LED, See-saw
言語: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

必要かもしれないもの

ファイル📁

Arduinoライブラリ(zip)

ユーザーマニュアル