\ Amazon 冬支度セール 11/4(月)~11/12/(火) /

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

arduino Arduino入門編
記事に広告(アフィリエイト広告)が含まれています。
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 05
【プッシュボタンスイッチ編】

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

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

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

タクトスイッチとも呼ばれています。

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

 

回路図とブレッドボード図を追記。
スケッチ(コード)を見やすいように修正。

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

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

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

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

正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。

 

Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)

 

 

スポンサーリンク

はじめに

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種類を揃えておくことをお勧めします。

短めが使いやすい場合も。

 

抵抗も単品で揃えるよりはセットをおすすめします。

 

抵抗、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で制御するということになります。

 

実践 回路作成とコード作成

最初に回路図を確認してください。

次に、回路図に合わせて部品を接続します。

最後にコードを書いて、プッシュボタンスイッチを動かしていきましょう。

 

Arduinoのピン配置を確認したい方は番外編02を参照してください。

 

回路図

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

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

8番と9番ピンはプッシュボタンスイッチに接続。

5番ピンは抵抗とLEDに接続します。

LEDを保護するために電流制限抵抗を入れるのを忘れないでください。
電源に直接接続すると焼ききれます。

 

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

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

回路図がこちら。

 

Arduino-lesson05-06

 

こちらがブレッドボード図。

 

Arduino-lesson05-07

 

回路図は「fritzing」を利用しています。

「fritzing」の使い方は下記を参照してください。

 

接続

回路図またはブレッドボード図を参考にUNO、LED、抵抗、スイッチを配線で接続しましょう。

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

 

繰り返しになりますが・・・

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

どちらもスイッチを押すとポートとGNDが接続される!

LEDを保護するために電流制限抵抗を入れるのを忘れないでください。
電源に直接接続すると焼ききれます。

 

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に入力ピンの状態が入ります。
byte byte型は0から255までの8bitの数値を格納します。
符号無しのデータ型で、これは負の数値は扱えないという意味です。
pinMode(pin, mode) pin::設定したいピンの番号
mode:INPUT,OUTPUT,INPUT_PULLUPINPUT_PULLUPは、内部プルアップ抵抗を有効にできます。
INPUTを指定すると、内部プルアップは無効となります。
※プルアップするとは?
ピンに何も繋がっていなくても「High」にできるということです。

 

サンプルコード

LEDのON、OFFをプッシュボタンスイッチで制御できるようにしています。

コードをUNOに書き込んで確かめてみましょう!

 

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

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


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

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

  //8番ピンがLowなら{ }内を実行
  if (digitalRead(buttonBpin) == LOW){
    digitalWrite(ledPin, LOW);         //LEDにLowを送る
    }

  }

 

スケッチ(コード)の内容を説明すると下記のようになります。

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

 

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

 

本Lessonの勘所は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入門編Arduino入門編2で使用しているUNOはAmazonにて購入可能です。

Arduino入門編では互換品を使用。

Arduinoはオープンソース。

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

 

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

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

 

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

 

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

 

Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)

 

Amazonでお得に買う方法

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

時期により異なりますが、様々なキャンペーンを実施しています。

\Amazonギフト券/
Amazonギフトカード キャンペーン

Amazon Mastercard お申込み
Amazon Mastercard 申し込み 

 

いずれの場合もプライム会員である方がお得!!

\Amazon Prime 30日間の無料会員を試す/
無料会員登録 

 

 

コメント

  1. takayoshi より:

    はじめまして。Arduinoをやり始めるあたり、omoroya様のHPにたどり着きました。このLessonまでやっとこさですが進んできました。質問をお願いしたいのですが、スケッチ内の「byte leds = 0;」の部分は変数の宣言と理解したのですが合ってますか?と「leds」は何なのかわかりません。教えていただけませんでしょうか。よろしくお願いいたします。

    • omoroya omoroya より:

      こんにちは。
      変数の宣言と初期化と考えていただければよいですが
      すみません、よくよく見ると不要ですね・・・。
      ご指摘ありがとうございます!
      削除して動かしてみてください。
      動作は何もかわらないと思います。

  2. KUMA より:

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

    • omoroya omoroya より:

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

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