Chaosさんにご助言頂きその他もろもろプログラムを修正した結果、チラつき感ゼロを達成致しました!
1. 実験!
1.1 接続
ピッチ変換基盤のお陰で接続続は僅か4本と超お手軽です!
図2:実際に作ったもの
1.2 プログラム
プログラムは前回の物を元に画面がチラつかない様に修正しました。
動作は同じでランダムに生成した-10~+10の値を1秒毎にLCD上段に表示して、下段に「NOBArduinoDiary!」と表示します。
//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.3 実験!
図3:前回のプログラム
図4:今回のプログラム
2. まとめ
クリアコマンドを入れたのが画面チラつきの原因でした
Chaosさんご助言頂きましてありがとう御座いました!
励みになりますのでよければクリック下さい(^o^)/