子供と一緒に始める マイコンプログラム Arduino 入門 プッシュボタンスイッチ編 Lesson 05

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

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

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

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

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

 

はじめに

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

スイッチでオン、オフってプログラムいらないのでは?と思うかもしれませんね。

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

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

それによって、UNOから電源が供給されLEDのオン、オフが制御されます。

 

Lesson 05目標

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

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

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

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

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

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

 

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

 

準備

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

 

必要なもの

 

使用部品説明

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

 

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

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

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

足が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にプログラムを書き込んで行きましょう。

メーカー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に書き込んで遊んでみてください。

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のスイッチが押されたら、UNOの9版ピンにLowが送られ、5番ピンにHighが送られる。
⇒LEDがオン
②Bのスイッチが押されたら、UNOの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時間を周期的に制御することで音程が変わることを楽しんで遊びます。

 

 

本Lessonで使用しているUNOはAmazonにて購入可能です。

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

 

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

コメント

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