第19回 スイッチを追加する

タイトル画像

ブレッドボードにスイッチを追加します。

目次

スイッチを追加しよう

前回の記事では青色LEDをピカッ、ピカッ、と光らせるスケッチを作成しました。このピカッ、ピカッ、と光る動作は、タイマーが動作しているとき用にします。

でも前回のスケッチの状態だと、スケッチをArduinoボードに送り終わったらすぐにLEDが点滅を始めてしまいます。

キッチンタイマーとしてはぜひともスタートボタンが欲しいものです。そこでブレッドボードにスイッチを追加して、タイマーのスタートボタンにします。

Arduinoボード端子内部の復習

かなり前になりますが、第10回の記事でArduinoボードの端子内部はスイッチと電圧計が入っていて、どちらの機能で使用するかは「pinMode」命令で指定することを説明しました。

pinMode命令の仕組み

第10回の記事では、pinMode(12, OUTPUT);とスケッチに書いて12番端子をスイッチ機能にしてLEDを制御しました。

pinMode(12, OUTPUT)の内部のようす

今回の記事ではスイッチを追加しますが、スイッチは23番端子に接続することにします。

23番端子にしたことに特に理由はありません。スイッチの配線がしやすそうな端子を選びました。この23番端子を、pinMode命令で電圧計の機能にして電圧を読み取ります。

23番端子の内部のようす

電圧計の種類

この電圧計の機能はちょっと変わっています。上の図では0Vから5Vまで測定できるメーターのようになっていますが、実はこの電圧計は0Vか5Vのどちらかの値でしか読み取れないんです。

「0Vか5Vのどちらかを読み取る」とは言っても、実際の端子の電圧が中途半端な場合はどうなるのでしょうか。

実は中途半端な電圧の場合でも、0Vか5Vのどちらかで無理やり読み取ってしまうんです。

例えば端子の電圧が0.5Vぐらいであれば0Vに近いので「0V」と読み取ってくれます。また4.7Vぐらいであれば5Vに近いので「5V」と読み取ってくれます。

ただ、0Vと5Vの中間ぐらいの値、例えば2.5Vなどの場合は0Vと5Vのどちらで読み取るかはわかりません。

なんだか変わった電圧計ですが、よくよく考えてみると0Vか5Vかどっちかだというのは、すがすがしいですよね!

とはいっても、0Vから5Vの間の電圧を連続的に読み取りたい場合もあるはずですが、そのような場合はどうすればいいのでしょうか。

Arduinoボードの内部には、この電圧計とは別に、連続的に読み取れる電圧計も内蔵されています。連続的に読み取る電圧計は基礎編パート2で登場します。

このように、Arduino内部には、0Vか5Vのどちらかしか読み取れない電圧計と、0Vから5Vの間を連続的に読み取れる電圧計の2種類があります。

それにしてもArduino内部には電圧を読み取る機能に2つのタイプがある、というのはちょっと不思議に思いませんか?

というのは、0Vから5Vの間を連続的に読み取ることができるのであれば、当然ながら「0V」と「5V」という値も読み取ることができます。だったら、連続的に読み取ることができる電圧計だけあれば十分ですよね。

0Vから5Vの間を連続して読み取れる機能とは別に、わざわざ0Vか5Vのどちらかしか読み取れない電圧計が必要な理由は見当たりません。

この2つの機能を、Arduinoボードの内部動作という観点で見ると違いが出てくるんです。

0Vから5Vの間の電圧を連続的に読み取る場合、0Vか5Vのどちらかを読み取る場合に比べて、だいたい10倍ぐらいの時間がかかります(とは言ってもArduinoボードの処理速度は早いので、どちらの処理も人間から見ると一瞬ですが…)。

また、時間がかかる分、電池も余分に消費してしまいます

スイッチのようにONかOFFかの2つの状態を読み取るだけであれば、わざわざ時間と電気を多めに使って電圧を読み取るというのはもったいないですよね。そこで、短時間で読み取ることのできる0Vか5Vの読み取る電圧計が用意されています。

今回はスイッチのONかOFFかを読み取りますので、0Vか5Vかを読み取る電圧計を利用します。

スイッチの接続

Arduino Microの23番端子は、下の図のように置いた時に左下から9番目にあります。これからこの23番端子にスイッチを接続するわけですが、どのように接続すればよいのでしょうか。

Arduinoボードの左下から4番目の端子は、マイナス側の端子になっています。

ArduinoボードGND端子

このマイナス側の端子を利用して以下のようにスイッチを接続してみます。この時、スイッチをONにすると23番端子はマイナス側に接続されることになりますので、電圧計は0Vになります。

23番端子スイッチON

では、スイッチをOFFにした場合は電圧計は何Vになるのでしょうか。

23番端子スイッチOFF

普通の感覚からすると、何も接続されていなければ0Vという気がしますよね。実は端子に何も接続されていない場合、電圧は0Vではなく不安定な値になってしまうんです。

今回製作しているキッチンタイマーに限らず、Arduinoボードの端子にスイッチを接続するというケースはたくさんありそうですよね。

例えばArduino仕様として、「スイッチを接続しても、スイッチがOFFの場合は読み取る電圧は不安定になります」というのでは困りますよね。

Arduinoボードではこのような時のために内部に専用の機能が用意されています。

プルアップ機能

Arduinoボードの端子を電圧計の機能にした場合、端子に何も接続されていない場合は内部電池のプラス側に接続されていることにする、という機能があります。

Arduino内部プルアップ

正確に理解するには、電子回路の詳しい知識が必要になりますので、ここまでの説明にしますが、この機能の名前を覚えておきましょう。

この機能は「プルアップ機能」と呼ばれています。

「プル」は日本語で「引っ張る」、「アップ」は「上」という意味です。「プルアップ機能」は日本語で「上に引っ張る機能」ということになりますが、これは端子に何も接続されていない場合に「電圧計を電池のプラス側(上側)に引っ張って接続する」というイメージからきています。

このプルアップ機能を利用すると、スイッチがONの場合は以下のようにマイナス側接続が優先されて、電圧計は0Vになります。

Arduino内部プルアップ-スイッチON

スイッチがOFFの場合、プルアップ機能が働いて電圧計は5Vになります。

Arduino内部プルアップ-スイッチOFF

ブレッドボードにスイッチを追加する

それでは、Arduinoボードの23番端子にスイッチを接続しましょう。先ほど説明したように、スイッチは以下のように23番端子とマイナス側端子の間に接続します。

スイッチ回路

接続図は簡単ですが、ブレッドボードにスイッチを追加する場合、スイッチの仕組みを理解しておく必要がありますので、最初にスイッチの構造を確認しておきます。

基礎編で使用するスイッチは以下の形をしています。使用する色は何色でも構いません。

スイッチ外観

スイッチには4つの金属端子がありますが、スイッチを上から見ると片側に2つずつあることがわかります。

上から見たスイッチ

このスイッチは内部は以下のようにオレンジ線の部分がスイッチ内部で接続されていて、スイッチを押すと全部の金属端子が接続状態になります。

スイッチの内部接続状態

スイッチ内部はこのようになっていますので、ブレッドボードに以下のようにセットすると、スイッチを押すことにより2つのラインが接続されます。

ブレッドボード状のスイッチ

それではスイッチの構造がわかったところで、ブレッドボードにスイッチを追加していきましょう。

スイッチをセットする位置ですが、このシリーズの後半では、アラーム用のスピーカーもブレッドボード上にセットします。また、基礎編パート2では、さらにスイッチを追加します。

スピーカーとスイッチの予定位置

そこで、今回追加するスイッチは以下の位置にしましたので、合わせていただければと思います。(ブレッドボードの列番号39番と41番を使っています)

スイッチの位置

それでは実際にスイッチを上の図の位置にセットしましょう。セットしたら最初に以下の配線を行います。

スイッチとマイナス側の接続

この配線は第8回の記事でLEDを接続した時と同じように、マイナス側の接続は以下のように行います。なお、配線は短いオレンジ色の配線の長さがちょうど合うと思います。

スイッチのマイナス側の接続

次に、以下の配線を行います。

スイッチと23番端子の接続

Arduino Microの23番端子と、スイッチのもう片方を接続すればOKですので、以下のように接続しました。長いオレンジ色の配線の長さが合うと思います。もし合わないようでしたら、スイッチを1列ずらしてみてください。

スイッチと23番端子の接続

さて、配線がちょっと複雑になったので念のため配線を確認しましょう。スイッチの記号で表現すると以下のように接続しました。

接続図での接続の確認

ブレッドボード状の接続は、上の配線図を黒色の線でかくと、以下のように接続していることになります。

ブレッドボードの接続の確認

今回のスイッチの配線がわかりづらい場合は、上の2つの黒い線の接続を確認して、接続が同じであることを確認してみてください。

以下は、実際にスイッチを接続したブレットボードの画像です。

スイッチを追加したブレッドボード

次回は23番ピンのスイッチの状態を読み取る命令を説明します。

更新履歴

日付 内容
2019.8.13 新規投稿
2021.8.22 新サイトデザイン対応
通知の設定
通知タイミング
guest
0 コメント
新しい準
古い順 一番投票が多い
本文中にフィードバック
全てのコメントを見る
ネモ
ネモ
5 年 前

すごく分かりやすくて勉強させていただいています。
ここで23番端子が出てきますが、どうして23番になるのか理解できません。
基盤にはA5と書いてあり16進数で考えると21番になるかと思います。
上から数えても下から数えても23番目にはならず、疑問に思いました。

管理者
管理者
返信  ネモ
5 年 前

ご質問どうもありがとうございます。

すみません、十分な説明がないまま「23番端子」と説明してしまい申し訳ございませんでした。Arduinoボードの端子番号はちょっと複雑ですので、補足記事として以下にまとめました。ご参考にしていただければと思います。

https://tool-lab.com/make/arduino-basic-1-19-supplement-1/

他にもご不明点ありましたらご質問いただければと思います。

ネモ
ネモ
返信  管理者
5 年 前

ご回答ありがとうございました。
補足記事まで作っていただいて、とても分かりやすいです。
自分で仕様書を読み解けるようになればいいんですが・・・
これから勉強していきたいと思います。

管理者
管理者
返信  ネモ
5 年 前

仕様書などは知識がある前提で書かれていることが多いので、基本的な知識を身につければすぐに読めるようになります!
ある程度知識を身につけたら、どんどん仕様書を読んでみることをお勧めします!

目次