ESP32でI2C接続のLCD「AQM1602A」を使う

ESP32でI2C接続のLCD「AQM1602A」を使う

こんにちは。今日はESP32 devkit cと I2C接続ができるLCD「AQM1602A」 を使って文字を表示させてみました。

実行環境

ソフトウェア関連

  • windows10 home
  • Arduino 1.8.5
  • ESP32 core for arduino 1.0.0

使用部品

LCDとは

LCDとはLiquid Crystal Displayの略で、日本語で言えば液晶ディスプレイです。電卓の表示などをはじめ、様々なところで文字の表示器として使用されています。

I2C接続とは

I2Cは機器同士をつなげる方式です。特徴として

  • 2本の線だけで複数の機器とのやり取りを実現する

が挙げられます。
I2C接続の詳しい説明はI2C通信の使い方
が参考になります。

マスターとスレーブ


マスターとなる機器からSCLSDAという名前の付いた線が出ています。これにそれぞれ繋げたい機器(スレーブと呼ばれる)のSCLとSDAを接続すれば通信ができてしまいます。

ESP32のI2C用ピン

ESP32をはじめ、ArduinoやPIC等にはI2C用のSCL,SDAピンが設定されていることが多いです。ピン配置を見てみましょう。


右の方に見えるWire SCLWire SDAがそれです。
つまりGPIO22と21を使えばいいことになります。

I2C接続LCDの使い方

秋月電子の商品ページにあるLCDデータシートを見てみましょう。


分かりやすく基板にSCLSDAと書かれていますね。これをそのままESP32のSCL(GPIO21)とSDA(GPIO22)に繋げば接続は完了です。簡単!

回路


LCDの+Vを電源の5VにGNDをGNDに接続します。すべての接続が終わった状態が上記の写真です。これで準備は完了。

ソースコード(コピペで動きます)

Arduino系でI2C接続する時には、最初から入っているWire.hというライブラリを使います。

#include<Wire.h>

#define LCD_ADRS 0x3E
char moji[] = "Wak-tech.com";
char moji2[] = "Hello,LCD!";
void setup() {
  // put your setup code here, to run once:
  Wire.begin(21,22); //Wire.begin(SDA,SCL)
  init_LCD();
}

void loop() {
  // put your main code here, to run repeatedly:
  for(int i=0;i<10;i++){
    writeData(moji2[i]);
  }
  
  //2行目へカーソル移動
  writeCommand(0x40+0x80);
  for(int i=0;i<12;i++){
    writeData(moji[i]);
  }
  
  //ループ中断
  while(1);
}
//データ書き込み
void writeData(byte t_data){
  Wire.beginTransmission(LCD_ADRS);
  Wire.write(0x40);
  Wire.write(t_data);
  Wire.endTransmission();
  delay(1);
}
//コマンド書き込み
void writeCommand(byte t_command){
  Wire.beginTransmission(LCD_ADRS);
  Wire.write(0x00);
  Wire.write(t_command);
  Wire.endTransmission();
  delay(10);
}
//LCD初期化
void init_LCD(){
  delay(100);
  writeCommand(0x38);
  delay(20);
  writeCommand(0x39);
  delay(20);
  writeCommand(0x14);
  delay(20);
  writeCommand(0x73);
  delay(20);
  writeCommand(0x52);
  delay(20);
  writeCommand(0x6C);
  delay(20);
  writeCommand(0x38);
  delay(20);
  writeCommand(0x01);
  delay(20);
  writeCommand(0x0C);
  delay(20);
}

ここに記載しているコードはほぼデータシートArduinoとの接続と同じです。

一部異なるのはこの部分

void setup() {
  // put your setup code here, to run once:
  Wire.begin(21,22); //Wire.begin(SDA,SCL)
  init_LCD();
}

Wire.begin()でI2C通信がスタートします。この時に念のためSDAとSCLのピンを指定してあげましょう。

Wire.begin(21,22);

これで好きな文字が表示できたはずです!

参考にさせていただいたサイト

最後に

twitterアカウントの方で最新記事のお知らせや記事にならないような小さな情報を小出ししています。もしよろしければフォローお願いいたしますm(__)m

ご覧いただきありがとうございました!

>>ESP32チュートリアル一覧に戻る

「ESP32でI2C接続のLCD「AQM1602A」を使う」に3件のコメントがあります

  1. ピンバック: ESP32でOpenWeatherMapのAPIを使って現在の天気をLCD「AQM1602A」に表示させる | Wak-tech

  2. ピンバック: ESP32でOLEDディスプレイ「SSD1306」にHello-world表示してみた | Wak-tech

  3. ピンバック: ESP32で始めるIoT電子工作入門【20個のチュートリアル】 | Wak-tech

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です