検索コード

レッスン98-8:Arduinoで押しボタンとLEDを使ったウォーキングライト

レッスン98-8:Arduinoで押しボタンとLEDを使ったウォーキングライト

このプロジェクトでは、プッシュボタンを押すたびに1ステップずつ進む「ウォーキングライト」の作り方を紹介します。独自のタイマーで動くライトではなく、直接的で触覚的な操作が可能になります。ボタンを押すたびに点灯するLEDが1つ先へ進み、最後のLEDの後は最初に戻ってループします。これはArduino学習において最も役立つ構成要素の1つです。なぜなら、デジタル入力(ボタン)と回転する状態機械(現在どのLEDが点灯しているか)を組み合わせる方法を学べるからです — これは繰り返し使うことになるパターンです。

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

このパターンを理解すれば、同じロジックが幅広い実用的なプロジェクトを動かします。以下は、これを活用して作れる実用的なアイデアの一部です:

  • 押すたびに次のオプションがハイライトされる、デバイスのメニューセレクター。
  • 機械やプロセスの逐次ステップインジケーター(ステップ1、ステップ2、ステップ3...)。
  • ボタンで手動で進めるスコアやレベルの表示。
  • 照明コントローラーの「次のチャンネル」または「次のモード」インジケーター。
  • プレイヤーが交代で次のランプを点灯させる、シンプルなゲームやクイズのブザー。
  • 押すたびに次の出力を順番に有効にする、リレーや負荷のシーケンサー。

自動で動くウォーキングライトに対する主な利点は制御性です。押すまで何も起こらないので、ライトはあなたが決めたときにだけ進みます。同じトグルとシーケンスのアイデアは、LEDだけでなく、リレーを駆動してACライトを切り替えたりモーターを制御したりすることもできると動画では述べられています(動画の19:52)。

ハードウェアと部品

部品リストは短く、安価です:

  • Arduinoボード(Uno、Nano、Mega、または互換ボード)。
  • 5つのLED — 5 mmまたは3 mm、色はお好みで。
  • 5つの電流制限抵抗、200 Ωから1000 Ω(動画では1 kΩを使用)。
  • 1つのプッシュボタンスイッチ(モーメンタリのタクタイルスイッチが理想的)。
  • ブレッドボードと数本のデュポンジャンパーワイヤー。

LEDについての簡単な注意:カソードは短い脚で平らな端のある側、アノードは長い脚です(動画の03:13)。抵抗値は重要ではありません — 抵抗が大きいほどLEDは暗くなるだけなので、約300 Ωから1000 Ωまでなら問題なく動作します(動画の05:33)。

配線ガイド

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

配線は基本的に標準的な5LEDウォーキングライトと同じで、プッシュボタンが1つ追加されています。各LEDのアノードはそれぞれのArduinoピンに接続し、各カソードはそれぞれの抵抗を通してブレッドボード上の共通グランドレールに接続します。この製作では、LEDはピン3、4、5、6、7に配線されています(動画の31:37)。プッシュボタンはブレッドボードに配置し、片方の脚をグランドに、もう片方の脚をピン2に接続します — コードがボタンに使用するのと同じピンです(動画の37:04)。

コードがArduinoの内部プルアップ抵抗を有効にしているため、ボタンに外部抵抗は不要です。ボタンを押していないときはピンはHIGHを読み取り、押すとピンはグランドに引き込まれてLOWを読み取ります(動画の14:02)。

コードの説明

完全なプログラムはこの記事の下にあります。ここでは、実際に変更したくなる部分に焦点を当てます。

スケッチの先頭で、各LEDとボタンがピンに割り当てられています。ここで、自分の配線に合わせて製作をカスタマイズします:

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

LED_ON変数はこのプロジェクトの核心です。現在どのLEDが点灯しているかを記憶し、LED1から始まります。ボタンを押すたびに、コードはLED_ONをシーケンス内の次のLEDに進め、前のLEDを消すので、常に1つのLEDだけが点灯します。

また、各押下後に小さな遅延があります:

delay(200); // debounce / give the user time between presses

この200 ミリ秒の一時停止により、1回の物理的な押下が複数回の押下として登録されるのを防ぎます。指が震えたり、ボタンが敏感すぎると感じる場合はこの数値を増やしてください。より速い応答が欲しい場合は減らしてください。低くしすぎると、ライトが予期せず先にスキップすることがあるので注意してください(動画の41:20)。

主要なロジックはloop()にあります。ボタンを読み取り、ボタンが押されているとき(LOWを読み取ったとき)にのみライトを進めます。シーケンスはif / else ifチェックの連鎖を使用して、LED1からLED2、LED3へと移動し、最後のLEDの後でLED1に戻ります。方向やLEDの順序を変更したい場合、これが編集すべきブロックです — どのピンがどのピンに続くかを再割り当てするだけです。

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

コードをアップロードした後、ボタンを押すと最初のLEDが点灯し、離してもそのLEDは点灯したままです。次に押すとライトは2番目のLEDに移動し、その後3番目、4番目、5番目へと進み、その次の押下で最初に戻ります — 連続的なローテーションです(動画では40:22)。

200 ミリ秒の遅延の素晴らしい副作用は、ボタンを押し続けると、ライトが200 ミリ秒ごとに自動的に進み続け、ボタンが押されている間は実質的にこのプロジェクトが自動ウェイキングライトになることです(動画では42:07)。ボタンを離すと、現在のLEDで停止します。これにより、1つのボタンから手動ステップとハンズフリー実行の両方が可能になります。

ボタンを使わずにライトを完全に自動で動作させたい場合は、それは別のビルドです。自動バージョンはレッスン98-7: Arduinoと5つのLEDを使ったウェイキングライトで扱っています。

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

チャプター

  • [00:00] 10個のArduino LEDプロジェクトの概要
  • [01:22] Arduinoステップバイステップコースの紹介
  • [02:29] LEDの理解: 記号、極性、ピン
  • [03:49] LED電流制限抵抗の計算
  • [30:47] 5つのLEDを使ったウェイキングライト: 配線と原理
  • [32:52] ウェイキングライトのコード: ピン、タイミング、ループ
  • [36:41] プッシュボタンでライトを進める
  • [37:44] プッシュボタン付きウェイキングライト: コードの解説
  • [40:22] デモンストレーションと押下遅延の調整
  • [57:16] 結びの言葉とコースのアウトロ

画像

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Arduino UNOに接続された押しボタン付きブレッドボード上の5つのLED
Arduino UNOに接続された押しボタン付きブレッドボード上の5つのLED
940-Lessson 98-LED-8: Arduino code walking LED light with push button
言語: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

必要かもしれないもの

ファイル📁

Arduinoライブラリ(zip)

ユーザーマニュアル