【初心者向け】しっかりマスター!スイッチを使ったLEDの点灯方法 #5
今回は、Arduino UNO R4でスイッチを使ったLEDの点灯方法を解説します。
完成品のプログラムも載せているので、安心してください。
またタクトスイッチを使いますので、「使い方をまだ知らない…」という方は前回の記事👇をご確認ください。
それでは、最後までチャレンジしてみてくださいね👍
はじめに
この記事では、ELEGOOのArduino用電子LearningキットE3を使います。
👆のキットを使って、Arduino UNO R4でスイッチを使う方法を解説したいと思います。
必要なもの
1. マイコンボード
本記事では、Arduino UNO R4 Wi-Fiを使っていきます。
2. 電子部品
ELEGOOのArduino用電子LearningキットE3に入っている電子部品を使います。
赤色LED × 1
抵抗 10kΩ × 1
タクトスイッチ × 1
ジャンパーワイヤー 適量
ブレッドボード × 1
スイッチを使うための基礎知識
1. タクトスイッチとは
タクトスイッチとは、電子工作でよく使われる4つ足の小型スイッチです。
左の2端子がつながっていて、同じく右の2端子がつながっています。
左右はつながっていませんが、ボタンが押されることにより左右がつながります。
詳しい構造が知りたい方は、👇の記事をご覧ください。
2. プルアップ
例えば、どこにもつながっていないマイコンの入力端子があるとします。
どこにもつながっていないので端子電圧が不安定*になり、その端子がHIGH(5vとか3.3v)なのかLOW(GNDに近い電圧)なのか分かりません。
*ノイズなど外部からの影響を受けて、電圧がふらふらと変化してしまう。入力の誤検知にもつながる。
そこで抵抗を介して電源に吊り下げることで、端子電圧をHIGHレベルに固定します。これをプルアップといいます。
プルアップした状態では、ノイズなど外部からの影響を受けにくいです。
3. プルアップとスイッチの組み合わせ
Arduino UNOでスイッチを使うとき、例えば👆のような回路を組みます。
スイッチが押されていない時、電源にプルアップされた状態なのでArduinoにはHIGHレベルが入力されます。
スイッチが押された時、GNDと短絡(ショート)するのでArduinoにはLOWレベルが入力されます。
この入力電圧の違いをプログラムで読み取り、スイッチのオン・オフを認識します。
またArduinoには内部プルアップという機能があります。抵抗を外付けでプルアップしなくても、プログラムを記述するだけで内部でプルアップが可能です(後述)。
スイッチを使ったLEDの点灯回路
1. 回路図
👆のように配線します。スイッチの配線や、ピン番号に気を付けてください。
2. 配線の様子
配線は、例えば👆のような感じです。参考にしてみてください。
プログラミング
1. pinMode();でINPUT_PULLUPを設定する
スイッチの入力を使いたいピンに、内部プルアップを設定します。例えば、👇のように記述します。
pinMode(2, INPUT_PULLUP);
これで2ピンは入力端子になり、内部でプルアップされた状態です。
2. digitalRead();で入力を読み取る
入力に設定したピンの値を読み取るには、digitalRead()を使います。例えば、入力ピン(2ピン)の値を読むには👇のように記述します。
digitalRead(2)
ここで、先ほどのプルアップの話を思い出すと、
スイッチが押されてない → HIGHが入力される
スイッチが押された → LOWが入力される
でした。
つまり「スイッチが押されていない時」というのは、「2ピンの値がHIGHと等しい」ということです。
逆に、「スイッチが押された時」というのは、「2ピンの値がLOWと等しい」です。
よってこれらを整理すると、👇のような式が書けます。
スイッチが押されてない時 → digitalRead(2) == HIGH
スイッチが押された時 → digitalRead(2) == LOW
この式を、次のif文で条件式として使います。
3. if文で条件を付ける
「~である時に実行」というような条件を付けたい場合に、if文を使います。
if( 条件 ){ 実行したい処理 };
例えば、スイッチ(2ピン)が押された時にLED(8ピン)を光らせたい場合は👇のように記述します。
//スイッチが押された時
if(digitalRead(2)==LOW){
digitalWrite(8, HIGH); //点灯
}
また、ifで指定した条件以外の時に実行したい処理があれば、続けてelse文を書き加えます。「スイッチを押したとき以外の時はLEDを消したい」とするなら、👇のように記述します。
if(digitalRead(2)==LOW){ //スイッチが押された時
digitalWrite(8, HIGH); //点灯
}else{ //それ以外の時
digitalWrite(8, LOW); //消灯
}
4. スイッチでLEDをオン・オフするプログラム
👇のプログラムを入力してみましょう。注意事項をよく読んだ上で、ご使用ください。
//当Webサイトに掲載された内容によって生じた損害等の一切の責任を負いません。
//当webサイトの免責事項に同意いただける場合に限り、プログラムをご利用いただけます。
#define LED_PIN 8
#define SW_PIN 2
void setup() {
pinMode(LED_PIN, OUTPUT); //出力ピンに設定
pinMode(SW_PIN, INPUT_PULLUP); //入力ピン、内部プルアップに設定
}
void loop() {
if(digitalRead(SW_PIN)==LOW){ //スイッチが押された時
digitalWrite(LED_PIN, HIGH); //点灯
delay(50); //チャタリング対策
}else{ //それ以外の時
digitalWrite(LED_PIN, LOW); //消灯
}
}
5. プログラムの書き込みと動作確認
プログラムが完成したら、Arduinoをパソコンとつなぎ、検証→書き込みを行います。
「✓マーク」を押す(検証)
問題なければ、「→マーク」を押す(書き込み)
書き込みが終わり、上手く回路とプログラムが作れていれば、スイッチを押したときにLEDが点灯し、離したときにはLEDが消灯しているはずです。
やりましたね!ここまでお疲れさまでした!
おわりに
いかがだったでしょうか。
もしこの記事がお役に立てたら、"スキ"を押していただけると励みになります!
今回は、スイッチを使ったLEDの点灯について解説しました。ポイントは👇の3つです。
プルアップのしくみ
digitalRead();で入力値を読む
if else文による条件分岐
最後までお読みいただき、ありがとうございました。
この記事が気に入ったらサポートをしてみませんか?