2022/01/31

Arduino: スイッチ押下4回目でLEDを点灯させて,押下5回目でLEDを消灯させる

概要

Arduinoに接続されたタクトスイッチ(ボタンスイッチ)が4回押下されたときにLEDを点灯させて,さらにもう1回,合計5回押下されたときにLEDを消灯させて初期状態に戻るという処理を繰り返すプログラムを紹介します. ボタンスイッチの押下判定方法などの参考になれば幸いです.

デモ

先に実行例をどうぞ.

開発環境

Arduino Arduino UNO R3互換ボード
Arduino IDE Arduino 1.8.13

回路

回路図

デジタルピン2番にボタンスイッチを接続してください.なお,ボタンスイッチはActive Lowとしています.つまり押しているときはLOW,離しているときはHIGHです. デジタルピン12番にLEDを接続してください.なお,LEDはHIGH出力で消灯,LOW出力で点灯するように配線しているので注意してください. LEDをHIGH出力で点灯,LOW出力で消灯にしたい場合は,ソースコードの19行目と20行目の定義を入れ替えます. Arduinoのピン配置については,公式Webページを参照してください.

回路図

回路部品

参考単価をクリックすると,秋月電子通商のページもしくはメーカーページに飛びます. 「互換品」と記載されているリンクについては,互換性があると考えられる部品のページに飛びます. ただし,私が互換性および動作を確認したわけではありませんので,ご注意ください.

番号 部品名 型番 数量 参考単価
R1 炭素皮膜抵抗 各社 1/4W 10kΩ 1 1円 (互換品)
SW1 ボタンスイッチ 各社 1 10円 (互換品)
R2 炭素皮膜抵抗 各社 1/4W 330Ω 1 1円 (互換品)
LED1 LED 各社 赤色 1 10円 (互換品)
その他 リード線など 適量

ソースコード

GitHub Gistにて公開します.

簡単にソースコードを説明します.

タクトスイッチについては20ミリ秒周期(INTERVAL_TIME)状態(sw_val[SW_VAL_CURR])を取得し,前回の状態(sw_val[SW_VAL_PREV])も使用して状態が変化したことを検出します

タクトスイッチの押下回数(sw_count)が4回になったとき,LEDを点灯します.

タクトスイッチの押下回数(sw_count)が5回以上になったとき,LEDを消灯します.

ArduinoによるLED制御に関する記事

ArduinoによるLED制御を取り上げた,他の記事を紹介します.

製品紹介

0 件のコメント:

コメントを投稿