ホーム > カテゴリ > ロボット・電子工作・マイコン >

LCD(I2C接続)の使い方 [Arduino]

I2C接続のLCD(液晶ディスプレイ)の使い方です。

今回は16文字x2行のAQM1602XA-RN-GBWを使用しています。

実行例

使用部品・材料

総額で約2,485円です。(Arduino本体の値段を除く)

部品/材料値段備考
ブレッドボード¥270秋月電子の通販コード(P-00315)
I2C接続小型キャラクタLCDモジュール(16x2行・3.3V/5V)ピッチ変換キット¥550秋月電子の通販コード(K-08896)
白光(HAKKO) 簡易はんだ吸取器 ハッコースッポン 20G¥1,665Amazon.com

スッポンは別のものでも良いですが必須です。

はんだ付け

このLCDキットは「はんだ付け」をする必要があります。特にLCDと変換基盤の取り付けが難しいと思います。

赤色で囲まれた部分は、最初に「はんだ」を適当に盛ります。そして、次に「スッポン」で吸い取ると「それなりの仕上がり」になります。

※この部分は少し難しいので、各自の責任において実行してください。

配線図

SCL/SDAのプルアップ抵抗は変換基盤(裏)のハンダジャンパーパッドを「はんだ付け」で結線して10kΩを有効にします。

スケッチ(プログラム)

LCDに2行の文字列を表示します。

#include <Wire.h>

// デバイスアドレス(スレーブ)
uint8_t DEVICE_ADDRESS = 0x3E;

char line1[] = "\314\337\301\323\335\303";
char line2[] = "petitmonte.com";
char test[] = "1234567890123456"; // テスト用

void setup() {
  // マスタとしてI2Cバスに接続する
  Wire.begin();

  // LCDの初期設定
  init_LCD();

  // カーソルをホームへ戻す
  writeCommand(0x02); 

// --- クリア命令のテスト用
// ※この部分は「クリア命令のテスト用」ですので削除しても構いません。

  // 1234567890123456の表示
  for (int i = 0; i < sizeof(test); i++) {
    writeData(test[i]);
  }

  // LCDの表示をクリアする
  Wire.beginTransmission(DEVICE_ADDRESS);
    // クリア命令
    Wire.write(0x20);
    Wire.write(0x01);
  Wire.endTransmission();  

// ---  ココマデ

}

void loop() {
  // カーソルをホームへ戻す
  writeCommand(0x02); 

  // プチモンテの表示
  for (int i = 0; i < sizeof(line1); i++) {
    writeData(line1[i]);
  }

  // petitmonte.comの表示
  for (int i = 0; i < sizeof(line2); i++) {
    writeCommand(0x40 + 0x80 + i);
    writeData(line2[i]);
  }
}

// データ書き込み
void writeData(byte t_data)
{
  Wire.beginTransmission(DEVICE_ADDRESS);
    Wire.write(0x40);
    Wire.write(t_data);
  Wire.endTransmission();
  delay(1);
}

// コマンド書き込み
void writeCommand(byte t_command)
{
  Wire.beginTransmission(DEVICE_ADDRESS);
    Wire.write(0x00);
    Wire.write(t_command);
  Wire.endTransmission();
  delay(10);
}

// 液晶初期化
void init_LCD()
{
  delay(100);
  writeCommand(0x38); // FUNCTION SET
  delay(20);
  writeCommand(0x39); // IS=1
  delay(20);
  writeCommand(0x14); // INT OSC FREQUENCY
  delay(20);
  writeCommand(0x7A); // CONTRAST SET 0,1,2,3
  delay(20);
  writeCommand(0x54); // CONTRAST SET 4,5
  delay(20);
  writeCommand(0x6C); // F0LLOWER CONTROL
  delay(20);
  writeCommand(0x38); // IS=0
  delay(20);
  writeCommand(0x0C); // Display ON
  delay(20);
  writeCommand(0x01); // Clear Display
  delay(20);
  writeCommand(0x06); // Entry Mode
  delay(20);
}

※このスケッチは秋月電子のサンプルスケッチを使用しています。

最後に

今回のLCDは「はんだ付け」の難易度が高いのと、LCDを保護する筐体(枠)がないので少しの衝撃で画面が割れてしまいます。

初心者の方は出来れば、2倍以上の値段になりますが筐体があるタイプの購入をおススメします。





掲示板

ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。

関連記事



公開日:2017年07月13日 最終更新日:2017年07月14日
記事NO:02471