Arduinoと戯れてみる!
\今年最後のビックセール/

今すぐチェック!

Arduino 入門 Lesson 05 【プッシュボタンスイッチ編】

arduinoArduino入門編
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 05
【プッシュボタンスイッチ編】

「Arduino」を使ったマイコンのプログラミングを子供と一緒に学習するブログ。

少しずつ、子供と一緒に楽しみながら気長にアップしてく予定です。

本日はLesson 05 プッシュボタンスイッチ編です。

プッシュボタンスイッチを利用することで「デジタル入力」について理解していきます。

 

本Lesson解説で使用しているのはArduino互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

スポンサーリンク

はじめに

Lesson 05では、プッシュスイッチを利用して発行ダイオード(以下LED)をオン、オフして遊びます。

スイッチでLEDをオン、オフってプログラムいらないのでは?

と思うかもしれませんね。

 

このLessonでは、機械的にスイッチを使ってLEDをオン、オフさせるわけではありません。

スイッチを「押した」「押してない」という行為をデジタル信号としてUNOに認識させるということです。

その認識した結果により、UNOから電源が供給されLEDのオン、オフが制御されます。

 

Lesson 05目標

スイッチを使ってLEDをオン、オフさせます。

UNOにスイッチを「押した」「押していない」というのを認識させます。

上記によりLEDに電源が供給されLEDの「オン」「オフ」を確認します。

 

「押した」「押してない」という行為をデジタル信号だと理解することが一番の目標です。

「押した」「押していない」という行為。

デジタルの「1」、「0」の2値と考えることもできます。

 

今回も、楽しんで遊ぶことも目標の1つです。

 

準備

今回のLessonの準備に取り掛かりましょう。

 

必要なもの

 

Jumper wire抵抗は今後も頻繁に利用しますのセットで購入することをお勧めします。

 

Jumper wireできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。

 

今後のLessonでもLEDを多数使用します。

遊びで多数のLEDを光らせたい方は、セットで購入がおすすめです。

種類が豊富で色々と楽しめます。

色付き

 

透明

 

使用部品説明

新たに登場した部品について説明していきます。

 

プッシュスイッチ(以下スイッチ)

下の図が、スイッチです。

スイッチは、ボタンを押すか、レバーを回すことでスイッチがオン、オフします。

足が4本ついており紛らわしいですが、DとCは使用しないので無視しください。

AとBだけを考えれば単純なスイッチとして使えることがわかるかと思います。

 

arduino

 

手持ちがないかたはこちらからどうぞ。

 

  • ブレッドボード
  • 5mm RED LED
  • 抵抗 220Ω
  • Jumper wire(配線)

上記の部品説明に関しての詳細はLesson 03を参照してください。

 

スイッチの使い方

ここではスイッチの使い方について説明していきます。

 

1つ目のスイッチ

スイッチの片側をGNDに接続しておきます。

ボタンを押すことでUNOのポートにGNDが供給されます。

UNOにGNDが供給されたら、出力ポートからHighを出力します。

上記の動作によりLEDに電源を供給しオンさせます。

 

2つ目のスイッチ

スイッチの片側をGNDに接続しておきます。

ボタンを押すことでUNOのポートにGNDが供給されます。

UNOにGNDが供給されたら、出力ポートからLowを出力します。

上記の動作によりLEDの電源を遮断しオフさせます。

 

この二つのボタンの制御によってLEDのオン、オフをします。

この動作をプログラム化しUNOで制御するということになります。

 

実践

さっそく、UNOと部品を接続していきましょう。

 

接続

下図に示すように、ブレッドボードを使用してUNO、LED、抵抗、スイッチを配線で接続しましょう。

使用するポートは、Digital IOの「5、8、9」と「GND」です。

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

スイッチの片側が「GND」に接続されていることに注目してください。

どちらもスイッチを押すとポートとGNDが接続されるということです。

 

arduino

 

コードの書き込み

接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。

ELEGOOののキッドを購入されたかたは、そちらのコードを利用してもかまいません。

メーカーHP(ELEGOO)の製品Super Starter Kitから、チュートリアル入手し、その中にコードが梱包されています。

下記に示すコードは、私が書いたコードです。

 

本ブログのLessonでは、できるかぎりコードは自作する予定です。
説明しやすいというのもありますし、好きなように遊べるからといのもありす。

 

チュートリアルの入手は、Arduino 入門 購入編を参照ください。

ロードの仕方などの詳細はLesson 02を参照ください。

 

梱包されているコードを使用したいかたは、IDE統合環境の「ファイル」⇒「開く」で梱包されているコードを開きます。

ファイル名は「Digital_Inputs.ino」です。

開いたら、編集しても良いように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。

 

コマンド説明

コードの説明をしていきたいと思います。

これまでのLessonにでてきていないコマンドについて説明します。

コマンド説明
digitalRead(pin)指定したピンの値を読み取ります。
その結果はHIGHまたはLOWとなります。
例:val = deitalRead(pin)
変数valに入力ピンの状態が入ります。
bytebyte型は0から255までの8bitの数値を格納します。
符号無しのデータ型で、これは負の数値は扱えないという意味です。
pinMode(pin, mode)pin::設定したいピンの番号
mode:INPUT,OUTPUT,INPUT_PULLUP
INPUT_PULLUPは、内部プルアップ抵抗を有効にできます。
INPUTを指定すると、内部プルアップは無効となります。
※プルアップするとは?
ピンに何も繋がっていなくても「High」にできるということです。

 

サンプルコード

下記をコピーしてUNOに書き込んで遊んでみてください。

//Lesson 05 スイッチ ON OFFによるLED制御
//https://omoroya.com/

int ledPin = 5; //デジタルピン5にLED(陽極)に割り当て
int buttonApin = 9; //デジタルピン9にプッシュボタンAに割り当て
int buttonBpin = 8; //デジタルピン8にプッシュボタンBを割り当て

byte leds = 0; //符号なしデータ型を設定

void setup() //初期設定するところ
{
 pinMode(ledPin, OUTPUT); //5番ピンをOUTPUTに設定
 pinMode(buttonApin, INPUT_PULLUP); //9番ピンをHighにする(プルアップ)
 pinMode(buttonBpin, INPUT_PULLUP); //8番ピンをHighにする(プルアップ)
}

void loop() //ループ関数
{
 if (digitalRead(buttonApin) == LOW) //9番ピンがLowなら{}内を実行
 {
  digitalWrite(ledPin, HIGH); //LEDにHighを送る
 }
 if (digitalRead(buttonBpin) == LOW) //8番ピンがLowなら{}内を実行
 {
  digitalWrite(ledPin, LOW); //LEDにLowを送る
 }
}

 

コードの内容を説明すると下記のようになります。

初期設定した後に下記を実行
①Aのスイッチが押されたら、9番ピンにLowが送られ、5番ピンにHighを送る。
⇒LEDがオン
②Bのスイッチが押されたら、8番ピンにLowが送られ、5番ピンにLowを送る。
⇒LEDがオフ

 

スイッチによってLEDのオンとオフを確認することはできましたでしょうか?

 

本日のみそは8番ピン、9番ピンをプルアップ(通常High)にしておくことです。
プルアップにしておくことで、スイッチを押したときはGNDになります。
この動作が「High」「Low」のデジタルの役割をしていることを理解することが重要です。

 

その「High」「Low」をUNOで認識し出力の5番ピンから電源を供給(「High」「Low」の信号を出力)しています。

実際に「オン」「オフ」しているところがこちら。

 

オン

arduino

 

オフ

arduino

 

まとめ

今回は以下の内容について理解してもらいました。

UNOにスイッチを「押した」「押していない」というのを認識させる。

 

認識させる方法は

スイッチを割り当てたピンをプルアップ(通常High)しておくことで、押したときはGNDになるようにする。

この動作が「High」「Low」のデジタルの役割をしている。

その「High」「Low」をUNOで認識し出力の5番ピンから電源を供給(「High」「Low」の信号を出力)してLEDをオン、オフする。

 

また、楽しんで遊ぶことはできましたでしょうか。

 

Lesson 05 【デジタル入力編】はここまで。

ぜひ、みなさんも子供と一緒にやられてみることをお勧めします。

 

次回、Lesson 06は【電子ブザー編】です。

ブザーに通電する周期を変えて遊びます。

Arduino 入門 Lesson 06 【電子ブザー編】
本Lessonでは電子ブザー(アクティブブザー)を使い、電圧を掛けるだけで決まった音程のブザー音を出します。digitalWrite関数、delay関数を利用しブザーのON時間、OFF時間を周期的に制御することで音程が変わることを楽しみます…

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

Amazon ベストセラーNo.1
ELEGOO UNO キット レベルアップ  チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分)一般プライム会員
5,000円~19,999円0.5%1.0%
2,0000円~39,999円1.0%1.5%
40,000円~89,999円1.5%2.0%
90,000円~2.0%2.5%

さらに、初回チャージで1000ポイントもらえるキャンペーンも実施中!

\Amazonギフト券 1000ポイントキャンペーン/
Amazonチャージ 初回購入で1000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

 

コメント

  1. KUMA より:

    The Most complete starter kit Arduino MEGAを勉強してますが、Lesson5は急にプルアップが出てきて理解できずが困っておりました。分かりやすい解説を有難うございました。

    • omoroyaomoroya より:

      KUMAさん、コメントありがとうございます。kitは説明不足な箇所が多いですよね。なぜ?がわかる記事をこれからも更新していきたいと思います。

タイトルとURLをコピーしました