【初めてのArduino】4.スイッチ|ハンズオンで学ぶ初心者向け入門コース

YouTube

目次
0:00 オープニング
0:18 使う材料の準備
0:27 回路図
1:10 回路を組む
1:36 プログラムの作成
2:44 ボードに書き込む
2:56 ワンポイント
3:23 まとめ
電子工作を始めたばかりで、digitalRead関数と分岐処理の使い方分からなくてつまづいているんだ。

それじゃあまず、このコースを受けてdigitalRead関数と分岐処理の基本的な事から一緒に学んでいこう!
今回のレッスンで学べる事
  • digitalRead関数の使い方:INPUT,INPUT_PULLUP
  • 分岐処理(IF文)の使い方:if,else

このコースは、これから電子工作を始める方向けに、代表的なマイコンボードであるArduinoを使って、電子回路の組み方やプログラミングの仕方などをハンズオン形式で学べるコースになっています。

以下3つのボードは、全く同じコードで動作することが確認できています!

使用したコード

動画内で使用したコードです。ご自由にご使用ください。

INPUT_PULLUPを使用しない場合

INPUT_PULLUPを使用した場合

4.スイッチ

使う材料の準備

ここではレッスン3で使用した回路に押しボタンスイッチを加えて、スイッチを押している間はLEDが点灯、離している間は消灯するというプログラムを作っていきたいと思います。

今回使う材料は以下の図にある通りで、Arduino Uno・ブレッドボード・オスオスのジャンパーワイヤ5本・赤色LED・押しボタンスイッチ・330Ωと10kΩの抵抗です。

回路図

以下の図は、今回作成する回路図になります。

スイッチが押されている時はスイッチ内の抵抗は0Ωになるので、A点の電圧はGNDのレベル、つまり0Vとなります。

一方、スイッチが押されていない時はスイッチはとても高い抵抗値を持ちます。

抵抗値が高い状態は、ノイズによって少しでも電流が流れると高い電圧が発生して故障の原因になってしまうのです!

そのため以下の図の回路のように、電源電圧に対してプルアップ抵抗と呼ばれる10kΩ程度の抵抗をつなげるのが一般的です。

これをつなげることで、スイッチが押されてない時はA点の電圧を電源電圧に固定することができるので、ノイズに強くなります。

実は、この回路はある裏技を使うともっとスッキリするのですが、それは後ほど紹介します!

回路を組む

次に回路図にならってブレッドボード図を作成したのが以下の図です。

押しボタンスイッチは脚が4つあり、以下の図のようにつながっているので接続するときに向きを確認しましょう。

ということで、回路を組むことができました。

プログラムの作成

それでは次にコーディングを行っていきます!

「ファイル」→「新規ファイル」をクリックして、まずは以下の図のようにSetup関数の中に2つのpinMode関数を書きます。

デジタルピンを入力としたい場合は、ピン番号を指定した後、INPUTと書きます。

次に、loop関数の中にif文を書いていきます。

if文は、何かしらの条件が成立した時にだけ処理を行いたい時に使う文で、今回のようにボタンが押されたかどうかによって処理を変えたいとき等によく使われます。

if文の意味
カッコの中の判定式が成り立った場合は、その後に続く波カッコの中の処理を行い、判定式が成り立たなかった場合はelseの後に続く波カッコ内の処理を行う。

ifとelseはセットで使うことが多いので、一緒に覚えておきましょう!

なお判定式には、以下の図で挙げたような記号が使われます。

等しいことを判定する場合はイコールは2つ書く事になっているので、間違えないように注意しましょう!

またdigitalReadは、指定したデジタルピンの電圧レベルがHIGHかLOWかを読み取る関数です。

具体的な電圧レベルで言うと、電源電圧が5Vの場合、3.0V以上であればHIGH、1.5V以下であればLOWと判定する仕様になっています。

ボードに書き込む

最後にファイルを保存し、ツールバーの「マイコンボードに書き込む」のボタンを押して書き込みます。

ボタンを押してない状態ではLEDは非点灯で、ボタンを押すと点灯することが確認できたら完了です。

ワンポイント

実はpinMode関数にはもう一つ便利なモードがあるので紹介しておきます!

pinMode関数には、これまでに紹介したOUTPUT, INPUTの他に、INPUT_PULLUPというパラメータもあります。

これはそのピンを入力設定にした時、Arduinoの内部にあるプルアップ抵抗を接続してくれるモードです。

そのため、今回使用した10kΩの抵抗が不要となり、回路をスッキリさせることができます。

回路規模を小さくしたい時や抵抗が手元にない時は、積極的に活用しましょう。

まとめ

ということで今回は、以下のような内容を学んできました。

今回のレッスンで学んだこと
  • digitalRead関数の使い方:INPUT,INPUT_PULLUP
  • 分岐処理(if文)の使い方:if,else
やってみよう!
今回学んだことを活かして、digitalReadをINPUT_PULLUPのパラメータに変更して、プログラムと回路を修正してみてください。

本記事の続きは、ハンズオンで学ぶ初心者向け入門コースの第五弾で説明していきます。

当サイトでは、最低限身につけるべき知識やツールの解説など、電子工作を 0 から体系的に学べる動画や記事を投稿しています。

さらに電子工作について学びたい方は、他の動画や記事もぜひ見てみてください。