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

Arduino 入門 Lesson 57 【Membrane Switch Module】

arduino-lesson57-00 Arduino入門編
記事に広告(アフィリエイト広告)が含まれています。
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 57
【Membrane Switch Module】

こにんちは、管理人のomoroyaです。

センサーの使い方の基本を学習する入門編。

 

世の中には、まだまだ色々なセンサーがあります。

これからも、色々なセンサーで遊んでいきます。

 

本記事はLesson 57 【Membrane Switch Module】です。

日本語に直訳すると・・・

Membrane Switch:膜スイッチ

でしょうか。

いわゆるキーパッドと呼ばれるものです。

 

コメントで解説してほしいと要望があったので電子部品を入手しました。

Lessonの番号が飛んでいるのは、MQ系のセンサーをもう少し解説したいため。

あとで、Lesson番号は変わるかもしれません。

 

キーパッドは、携帯電話、電子レンジ、炊飯器など、色々な家電製品で使用されています。

デバイス使用者が入力を行うための電子部品となります。

 

やろうと思えば、Lesson 05のプッシュスイッチボタン(タクトスイッチ)を使って同じようなことはできます。

Arduino 入門 Lesson 05 【プッシュボタンスイッチ編】
このLessonでは、機械的にスイッチを使ってLEDをオン、オフさせるわけではありません。スイッチを「押した」「押してない」という行為をデジタル信号としてUNOに認識させるということです。それによって、UNOから電源が供給されLEDのオン、…

挑戦してみても面白いかもしれません。

 

 

本Lessonで使用する「Membrane Switch Module」は以下が同等品となります。
※prime対応品(出荷元:Amazon)

 

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

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

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

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

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

 

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

 

 

スポンサーリンク

はじめに

本Lessonで使用する「Membrane Switch Module」は4×4のキーパッドとなります。

 

キーパッドの方式としては、「線形キーパッド」「マトリクスキーパッド」があります。

本Lessonで使用するキーパッドは「マトリクスキーパッド」。

 

マトリクスキーパッドの利点は使用する制御ピンの数が少なくできるということ。

4×4のキーパッドの場合、キーは16個あります。

一つのキーに一つのIOピンが必要な場合は17ピン必要。
※16 IOピンとGNDで17

しかし、マトリクスキーパッドを使うことで、半分の8ピンで制御可能となります。
※8 IOピンのみで制御可能

詳細は部品解説のところをお読みください。

 

Lesson 57 目標

本Lessonの目標は以下です。

1.Membrane Switch Moduleの使い方を学習する
2.マトリクスキーパッドの仕組みを理解する
3.Membrane Switch Moduleを動かすスケッチを描く
4.Membrane Switch Moduleを動かして遊ぶ

いつものように、遊ぶことが重要です。

 

Membrane Switch Moduleですが、ようするにスイッチです。

16個のスイッチのON、OFFをAruduinoで認識させて動作させるというだけ。

パッドに数字等々記載されています。

しかし見た目だけの問題で、どこのパッドに何を割り付けるかはスケッチを描く人の自由。

Membrane Switch Moduleを使わなくても、タクトスイッチでも同じことができます。

 

準備

ではLessonの準備に取り掛かりましょう。

電子部品は「Membrane Switch Module」のみ。

 

必要なもの

※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。

 

Jumper wire、抵抗は今後も頻繁に利用します。

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

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

 

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

 

抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!

という方は、「電子工作基本部品セット」が使い勝手が良い。

 

使用部品説明

Membrane Switch Module」について説明していきます。

 

Membrane Switch Module 実物写真

下の写真が「Membrane Switch Module」の実物写真です。

本Lessonで使用するものは、4×4マトリクスのキーパッド。

キーの数は16種類となります。

キーが16個ありますが、制御線は8本のみであることがわかります。

arduino-lesson57-01

 

Membrane Switch Module 回路図

Membrane Switch Moduleの回路図を示します。

 

単純にスイッチの集まりです。

スイッチがONしていると行(Row)と列(Column)の交点が導通する。

導通することで、押した場所がわかるという仕組み。

これが「マトリクスキーパッド」の回路方式です。

回路は単純、「タクトスイッチでも作成できます」というのがおわかりいただけましたでしょうか。

回路図のR1~R4、C1~C4をAruduinoのデジタル入出力ピンに接続して制御することになります。

arduino-lesson57-02

 

Membrane Switch Module 仕様

スイッチの塊です。

遊び、学習で使う分には気にする特性はとくにありません。

■仕様抜粋(購入したMembrane Switch Moduleにより異なる)

項目 仕様
接触抵抗 500Ω(テスタによる実測でも400Ω~600Ωの間におさまっていた)
絶縁抵抗 100MΩ
リバウンドタイム 1ms
生涯回数 1億回
動作温度 -40~+ 80℃
回路定格 35V(DC)100mA 1W
動作圧力(タッチ感) 170~397g

 

本Lessonは遊び、学習を想定しています。

Arduinoの仕様範囲内で使用していれば問題になることもありません。

遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。

 

実践1 回路作成とコード作成(動作理解編)

実践1では動作理解編としてライブラリを使わずマトリクスキーパッドを理解していきます。

動作理解のため、co1(1列)のみキーパッドを認識させてシリアルモニタに表示させます。

 

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

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

最後にコードを書いて、「Membrane Switch Module」を動かしていきましょう。

 

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

 

回路図(動作理解編)

まずは、動作を理解するためにキーパッドを1列のみ認識させるスケッチを考えます。

Arduinoの使用ピンは以下。

  • デジタル入力:9、8、7、6
  • デジタル出力:5

 

回路図がこちら。

arduino-lesson57-03

 

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

arduino-lesson57-04

 

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

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

 

接続(動作理解編)

下図に示すように、用意した部品を使用して接続しましょう。

部品は「Membrane Switch Module」のみとなります。

部品は1個、接続は簡単です。

Membrane Switch Module」と接続するジャンパーワイヤーはM-Mを使用してます。

ブレッドボードを使うかどうかはお好みで。

 

使用するポートは

  • デジタル入力:9、8、7、6
  • デジタル出力:5

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

arduino-lesson57-05

 

コードの書き込み(動作理解編)

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

コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。

 

コマンド説明(動作理解編)

本Lessonでは、特に新しいコマンドはありません。

 

サンプルコード(動作理解編)

本Lessonのスケッチではcol1(1列)のみ使用。

1列のキーパッドのみシリアルモニタに表示できるようにしています。

目的は、キーパッドの動作理解のためです。

//Lesson 57-1 Membrane Switch Module 動作理解(1列のみ認識)
//https://omoroya.com/

const int row1Pin = 9; //row1に9番ピン割り当て
const int row2Pin = 8; //row1に8番ピン割り当て
const int row3Pin = 7; //row1に7番ピン割り当て
const int row4Pin = 6; //row1に6番ピン割り当て
const int col1Pin = 5; //col1に5番ピン割り当て

void setup() {
  pinMode(row1Pin, INPUT_PULLUP); //9番ピンをHighにする(プルアップ)
  pinMode(row2Pin, INPUT_PULLUP); //8番ピンをHighにする(プルアップ)
  pinMode(row3Pin, INPUT_PULLUP); //7番ピンをHighにする(プルアップ)
  pinMode(row4Pin, INPUT_PULLUP); //6番ピンをHighにする(プルアップ)
  pinMode(col1Pin, OUTPUT);       //5番ピンをOutput指定

  Serial.begin (9600);   //シリアル通信のデータ転送レートを9600bpsで指定
}

void loop() {
  digitalWrite(col1Pin, LOW);  //col1(5番ピンに)"Low"を出力
  
  //row1(9番ピン)がLowを認識したら1を表示
  if (digitalRead(rowPin1) == LOW){
    Serial.println ("1");
  }
  //row2(8番ピン)がLowを認識したら1を表示
  if (digitalRead(rowPin2) == LOW){
    Serial.println ("4");
  }
  //row3(7番ピン)がLowを認識したら1を表示
  if (digitalRead(rowPin3) == LOW){
    Serial.println ("7");
  }
  //row4(6番ピン)がLowを認識したら1を表示
  if (digitalRead(rowPin4) == LOW){
    Serial.println ("*");
  }
  
  //タッチ感調整
  delay(200);
}

 

動作確認(動作理解編)

では、さっそく動作を確認していきます。

キーパッドの「1、4、7、*」を押してみてください。

シリアルモニタに押した箇所の文字が表示されます。

上記以外のところは押しても反応しません。

 

■col1(1列)のみ認識させた結果

arduino-lesson57-06

 

ライブラリを使わないことで、マトリクスキーパッドの動作原理を理解してみました。

 

実践2 回路作成とコード作成(ライブラリ使用編)

実践1にてマトリクスキーパッドの動作を理解しました。

実践2では、16キーすべて認識させます。

愚直に描くと煩雑になりますので、こちらはライブラリを使用します。

ライブラリを使用することで短いスケッチですみます。

動作を理解したら、積極的にライブラリを使うのがおすすめ。

 

使用するライブラリは「Keypad.h」。

ツール」→「ライブラリを管理…」で下記を使える状態にしてください。

arduino-lesson57-07

 

Keypad.h」の使い方は下記をご確認ください。

Arduino Playground - Keypad Library

 

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

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

 

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

 

回路図(ライブラリ使用編)

使用するライブラリ

Arduinoの使用ピンは以下。

  • デジタル入出力(row用):9、8、7、6
  • デジタル入出力(col用):5、4、3、2

 

回路図がこちら。

arduino-lesson57-08

 

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

arduino-lesson57-09

 

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

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

 

接続(ライブラリ使用編)

部品は「Membrane Switch Module」のみとなります。

ブレッドボードを使うかどうかはお好みで。

 

使用するポートは

  • デジタル入出力(row用):9、8、7、6
  • デジタル入出力(col用):5、4、3、2

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

arduino-lesson57-10

 

コードの書き込み(ライブラリ使用編)

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

コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。

 

コマンド説明(ライブラリ使用編)

本Lessonでは、特に新しいコマンドはありません。

 

サンプルコード(ライブラリ使用編)

スケッチは「Keypad.h」の解説ページに記載されているサンプルスケッチを参考に4×4に対応させたものとなります。

Arduino Playground - Keypad Library
//Lesson 57-2 Membrane Switch Module ライブラリ使用
//https://omoroya.com/
#include "Keypad.h"

const byte ROWS = 4; //行の指定 4
const byte COLS = 4; //列の指定 4

//4行4列の配列にデータ格納
char key4x4[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6}; //row(行)に接続するピン指定,回路図のR1,R2,R3,R4
byte colPins[COLS] = {5, 4, 3, 2}; //col(列)に接続するピン指定,回路図のC1,C2,C3,C4

//キーパッドの初期化
//内部キーマップを指定したkey4x4と等しくなるように初期化
Keypad gkeypad = Keypad( makeKeymap(key4x4), rowPins, colPins, ROWS, COLS); 

void setup(){
  //シリアル通信のデータ転送レートを9600bpsで指定
  Serial.begin(9600);
}
  
void loop(){
  //押されたキーがある場合は取得
  char gkey = gkeypad.getKey();

  //取得データがある場合はシリアルモニタに表示
  if (gkey != NO_KEY){
    Serial.println(gkey);
  }
}

 

動作確認 (ライブラリ使用編)

では、さっそく動作を確認していきます。

4×4の16キーを適当に押してみてください。

シリアルモニタに押した箇所の文字が表示されます。

 

■4×4の16キーすべて認識させた結果

arduino-lesson57-11

 

ライブラリを使用することで簡単に制御することができます。

 

まとめ

本Lessonは、以下を目標としました。

1.Membrane Switch Moduleの使い方を学習する
2.マトリクスキーパッドの仕組みを理解する
3.Membrane Switch Moduleを動かすスケッチを描く
4.Membrane Switch Moduleを動かして遊ぶ

 

Membrane Switch Module」は何かの電子部品と組み合わせて使うのが通常です。

LCDモジュールと合わせて、入力デバイスとする。

簡易的な電卓を作ってみる。

などなど、ほかの電子部品と組み合わせて何かをさせて遊ぶのが良いと考えます。

 

Lesson 57 【Membrane Switch Module】 はここまで。

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

 

次回、Lesson 58は【感雨・水位センサ】です。

Arduino 入門 Lesson 58 【感雨・水位センサ】
本記事はLesson 58 【感雨・水位センサ】です。本Lessonで使用する水位センサは、基板にプリントされた銅線が可変抵抗の働きをすることで、水を検出するというもの。センサ部分の水の浸かりぐあいによって導電率が変化し、抵抗値がかわるとい…

 

最後に

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

この電子部品の解説をしてほしい!などなどなんでも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. omoroya omoroya より:

    要望のあった、「Membrane Switch Module」を記事にしました。

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