プッシュスイッチによるArduinoへのデジタル入力

2022/03/06

Arduino プッシュスイッチ

t f B! P L

プッシュボタンでArduinoへデジタル入力。LEDを点灯・消灯します。

 目次:

今回の目的

ELEGOOのチュートリアルのスケッチそのままです。

プッシュボタン操作によるArduinoへデジタル入力によって、LEDを点灯・消灯させます。

※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。

Download ⇒「Arduino Kits & ~」⇒「UNO R3 Starter Kits」⇒ 「ELEGOO UNO R3 The Most Complete Starter Kit」 からダウンロードリンクに辿り着けます。


「プッシュスイッチ」

ELEGOOのキット付属品です。

(1)表

(2)裏

(3)内部回路

図1 プッシュスイッチ

言葉で表すなら「単極単投」、「a接点」、「NO(Normally Open)」になると思いますが、回路で見るのが一番わかりますね。

端子が4つあるのでどこが接点になっているのか要注意です。


器材接続

チュートリアルに図があるので省略しますが、Arduinoの(デジタル)入力端子2つがそれぞれのプッシュスイッチを介してGNDに接続します。

(通常状態で両入力はOPEN。プッシュスイッチ押された側の入力端子はGNDにつながる)。

Arduinoの出力端子から220Ω抵抗を介して、赤LEDのアノード(+)に接続。カソードはGNDに接続しております。

図2 機材接続


スケッチ

片方のボタンスイッチを押したらLEDが点灯して、もう片方のボタンスイッチを押したらLEDが消灯します。

入力の識別は「digitalRead」関数で実現できます。

digitalRead(pin)

 pin:入力ピンの番号

 戻り値:HIGH または LOW


出力は「digitalWrite」関数で実現できます。

digitalWrite(pin,value)

 pin:出力ピンの番号

 value:HIGH または LOW


それではスケッチです。

ELEGOOからダウンロードしたスケッチをそのまま書き込みます。

流れを言葉で書くと次のようになります。


 両入力のプルアップに設定(High入力になる)

→ボタンスイッチを押す

→押した方のボタンスイッチがGNDにつながる

→押した方の入力がプルアップを打ち消してGND(Low)電位に下がる

→入力Low時に設定した出力(HighなりLowなり)をLEDのアノードへ出力維持する

→LEDが点灯なり消灯なりの状態を維持する

 

<略>

boid loop()    //以下を延々と繰り返す

{

    if(digitalRead(Apin)==LOW)    //入力"Apin"側プッシュスイッチ押されたら

    

        digitalWrite(LEDpin,HIGH);    //出力"LEDpin"にHIGH出力する

    }

    if(digitalRead(Bpin)==LOW)    //入力"Bpin"側プッシュスイッチ押されたら

    

        digitalWrite(LEDpin,LOW);    //出力"LEDpin"にLOW出力する

    }

} 


余談

こうしてLEDを動かして数日後、この短いスケッチを思い返せない自分に気づきました。

「スイッチのチャタリングをどう処理していただろう」、「IF文で入力を見てフラグを立てた?」、「入力変化後にDELAYで待って再度判定、一致したら出力変化させた?」、「入力にコンデンサを介してGNDにつなげてチャタリング(ノイズ)を除去。。。した覚えない」。。。

見直してみれば前述の通り、各入力がLOWレベルを認識したら対応するレベルに出力を設定しているだけです(スイッチが2個あって機能を分担していることが肝でした)。

この程度すら思い返せない(考え出せない)自分は、今回のスケッチを軽く見るわけにはいかないと思いました。今回記事を書いた理由です。

このブログを検索

ブログ アーカイブ

自己紹介

にほんブログ村

QooQ