レッスン98-6:Arduinoを使ったシーソーLEDゲーム
シーソーLEDプロジェクトは、Arduinoプログラミングにおいて最も重要な概念の一つを学べる、定番の初心者向け演習です。それは、2つの出力を決まったリズムで交互に点灯させるというものです。2つのLED、2つの抵抗、そして数本のジャンパーワイヤーだけで、緑のLEDと赤のLEDが交代で点灯し、遊園地のシーソーが上下する動きを模した回路を作ることができます。シンプルな製作ですが、ピン定義、タイミング定数、連続したdigitalWrite()呼び出しといった、これから書くほとんどすべての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ケーブル
以上です — 押しボタンも、ポテンショメーターも、センサーもありません。これは意図的に可能な限り最小限の部品リストにしてあり、コードのロジックだけに集中できるようにしています。
配線ガイド
配線は対称的で分かりやすいです。両方の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_TIMEを200に変更して再アップロードしてみてください — LEDの切り替わりが明らかに速くなります。1000に設定すると、シーソーはゆっくりとした意図的な交互点滅になります。また、ArduinoをUSBから外し、バッテリーや5 Vアダプタから電源を供給することもできます。スケッチはすでにボードのメモリに保存されているため、同じように動作します。
この動画の関連プロジェクト
- レッスン98-1: ArduinoでLEDを点灯・消灯する方法
- レッスン98-2: ArduinoとプッシュボタンでLEDを点灯・消灯する方法
- レッスン98-3: ArduinoとプッシュボタンでトグルLEDを点灯/消灯する方法
- レッスン98-4: ArduinoでLEDをフェードさせる:明るさ制御
- レッスン98-5: Arduinoでボタンを押したときに光をフェードさせる
- レッスン98-7: Arduinoと5つのLEDでウォーキングライト
- レッスン98-8: ArduinoでプッシュボタンとLEDを使ったウォーキングライト
- レッスン98-9: Arduinoを使ったLED電圧レベルメーター、またはポテンショメータ付きウォーキングライト
- レッスン98-10: Arduino信号機
チャプター
- [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信号機プロジェクト
This code has not been parsed yet. Please return to the admin panel to parse it.
必要かもしれないもの
-
アマゾンSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
アマゾン
-
アマゾン
リソースと参考文献
-
ドキュメンテーションSunFounder 3 in 1 IoT/スマートカー/学習キットのドキュメントdocs.sunfounder.com
-
外部
-
外部アマゾンで本物のArduino UNO R3を購入してください。amzn.to
-
外部本物のArduino UNO R3を購入: アマゾンカナダamzn.to
ファイル📁
Arduinoライブラリ(zip)
-
SunFounderの3-in-1スマートカー学習キットソースコード
3in1-kit-main-v2.zip12.80 MB
ユーザーマニュアル
-
SunFounder 3-in-1 Arduinoスマートカー組み立てマニュアルこのドキュメントはSunFounder 3-in-1 Arduinoスマートカーのステップバイステップの組み立てを示しています。
SunFounder_car_assembly_manual.pdf1.20 MB