NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

LCDの使い方(AE-AQM1602A)動作確認 後編

イメージ 1
I2C接続小型キャラクLCDモジュール(AE-AQM1602A)
 
  前回の記事LCD(AE-AQM1602A)に文字を表示しましたが2行目がチラついてしまいました
 Chaosさんにご助言頂きその他もろもろプログラムを修正した結果、チラつき感ゼロを達成致しました

1. 実験!

 1.1 接続
 Arduino UNOLCD(AE-AQM1602A)の接続は前回同様で図1,2の通りです。
 ピッチ変換基盤のお陰で接続続は僅か4本と超お手軽です!
イメージ 3
図1:ブレッドボード回路図

イメージ 2
図2:実際に作ったもの
 
 1.2 プログラム
 プログラムは前回の物を元に画面がチラつかない様に修正しました。
 動作は同じでランダムに生成した-10~+10の値を1秒毎にLCD上段に表示して、下段に「NOBArduinoDiary!」と表示します。
 また、前回45行あったプログラムが余分な部分を統合廃止したところ、34行とだいぶスッキリ見やすくなりました!
//NOBのArduino日記!_AE-AQM1602Aの使い方_(20170315)
#include <Wire.h>//関数読み込み
String LCD_STRING; char s[16]; double SET; //変数の宣言

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

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

//LCDの1行目にデータ書き込み
void LCD_DISP_16_1(void) {
  writeCommand(0x80);//DDRAMアドレスを2行目先頭にセット
  for (int i = 0; i < 16; i++) {
    writeData(LCD_STRING[i]);
  }
}

//LCDの2行目にデータ書き込み
void LCD_DISP_16_2(void) {
  writeCommand(0x40 + 0x80); //DDRAMアドレスを2行目先頭にセット
  for (int i = 0; i < 16; i++) {
    writeData(LCD_STRING[i]);
  }
}

//液晶初期化
void setup() {
  Wire.begin(); delay(100);
  writeCommand(0x38); delay(20);
  writeCommand(0x39); delay(20);
  writeCommand(0x14); delay(20);
  writeCommand(0x7A); delay(20); //3.3V=0x73, 5V=0x7A
  writeCommand(0x54); delay(20); //3.3V=0x56, 5V=0x54
  writeCommand(0x6C); delay(20);
  writeCommand(0x38); delay(20);
  writeCommand(0x01); delay(20);
  writeCommand(0x0C); delay(20);
}

//無限ループ
void loop() {
  LCD_STRING = String("random:" + String(dtostrf(random(-10, 10), 5, 1, s))); //乱数代入
  LCD_DISP_16_1();                //LCD一行目に変数を出力する
  LCD_STRING = "NobArduinoDiary!";//「NobArduinoDiary!」代入
  LCD_DISP_16_2(); delay(1000);   //LCD二行目に変数を出力する
}
イメージ 1
図1:プログラム例
1.3 実験!
 図2の回路で上記プログラムをArduino UNOに書き込み実行した所、図3の様にチラつき感の無い表示となりました!特に2行目!
イメージ 4
図3:前回のプログラム

イメージ 2
図4:今回のプログラム

2. まとめ

 クリアコマンドを入れたのが画面チラつきの原因でした
 Chaosさんご助言頂きましてありがとう御座いました!
イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【LCDの使い方】目次に戻る