ESP32やESP8266でI2C接続4×4キーパッドを使う(3)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) 次のページへ
2022年03月28日 公開。

2-3.動作確認の方法

ESP-WROOM-02に接続したI2C接続キーパッドが正常に動作するかをテストするには、TwiKeypadライブラリに付属するサンプルスケッチを動かしてみるのが簡単です。

TwiKeypadライブラリをインストールしたArduino IDEを起動し、図2に示す様に、ファイルスケッチ例TwiKeypadGetCharメニューを選択します。

図2(再掲)、ファイル→スケッチ例→TwiKeypad→GetCharメニューの選択
図2(再掲)、ファイル→スケッチ例→TwiKeypad→GetCharメニューの選択

そうすると、リスト2に示すスケッチが開きます。(あるいは、コピー&ペーストで、リスト2のスケッチをArduino IDEに貼り付けても構いません)

リスト2、GetChar関数のデモ用スケッチCOPY
/*
  GetChar.ino

  This sketch demonstrates how GetChar function works.
*/

// include libraries
#include <Wire.h>
#include <TwiKeypad.h>

// variables
TwiKeypad keypad; // keypad object
const int TwiAdr=8; // keypad's TWI(I2C) Address

// functions
void setup()
{
  Wire.begin();// initialize TWI as master.
  keypad.begin(Wire,TwiAdr); // initialize keypad.
  Serial.begin(9600); // initialize serial port at 9600bps.
  while(!Serial); // wait for serial port to connect.
  Serial.println("Press keys.");
} // setup

void loop()
{
  char c=keypad.GetChar();
  if(c!='\0') {
    Serial.print(c);
  } // if
} // loop

このスケッチは、GetChar関数によりキーパッドから押されたキーを読み取り、その結果をシリアルに出力するスケッチです。このスケッチを、例えば図6に示すボードの設定でESP-WROOM-02に書き込みます。

図6、Arduino IDEのボード設定の例
図6、Arduino IDEのボード設定の例

なお、図5の回路は、スケッチの書き込み時に、自動的にフラッシュメモリの書き込みモードに移行する機能がありません。書き込みに先立って、モードスイッチ(SW1)を押したままの状態で、リセットスイッチ(SW2)を押して、フラッシュメモリの書き込みモードに手動で移行してください。

スケッチが書き込めたら、9600bpsに設定したシリアルモニタで動作を観察してください。図7に示す様に、押したキーがシリアルモニタに表示されます。

注:スケッチが書き込めているのに、うまく動作しない時は、一度3.3Vの電源供給を止めて、再び電源を入れてください。この操作により、ESP-WROOM-02とI2C接続キーパッドの両方がリセットされます。

図7、シリアルモニタの表示
図7、シリアルモニタの表示

キーを1、2、3、4の順に押した例を示します。

Press keys.のメッセージの前に、文字化けしたメッセージが表示されていますが、これは、ESP-WROOM-02の起動メッセージが74880bpsで送信された事によるものです。

2-4.ESP-WROOM-02がI2C接続に使うピンを変更する方法

Arduino環境でESP-WROOM-02でI2Cバスを使う場合は、SDA信号をIO4ピン、SCL信号をIO5ピンに接続するのがデフォルトですが、スケッチを修正する事で接続するピンを変更する事ができます。

I2Cインターフェースを初期化するWire.begin関数は、次の様な書式になっています。

Wire.begin(int sda, int scl)

参考:Wire.begin関数についての詳細は、ESP8266 Arduino CoreのドキュメントのLibrariesのページをご覧ください。

ここで引数sdaは、SDA信号に割り当てるGPIOのピンで、引数sclは、SCL信号に割り当てるGPIOのピンです。(ただし、引数を省略してWire.begin()とすると、Wire.begin(4,5)と解釈されます)

例えば、SDA信号をIO13ピンにつなぎ、SDO信号をIO14ピンにつなぐ場合は、リスト2の18行目のWire.begin();Wire.begin(13,14);と書き換えます。

目次へ  前のページへ (1) (2) (3) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

I2C接続4X4キーパッド 商品名 I2C接続4X4キーパッド
税抜き小売価格 2400円
販売店 スイッチサイエンス マルツ
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。