前提
Spresense を使って LCD へテキストを表示していました。
正常に表示されたので、そのスケッチをそのまま Arduino へ書き込んでみたところ、不具合が生じました。
LCD: 2004A I2Cシリアルインターフェース付き
Arduino:ArduinoUNO
環境:Arduino IDE 2.0
実現したいこと
Arduino を使用して LCD へテキストを表示したい。
発生している問題・エラーメッセージ
次のように、Spresense と Arduino で LCD の表示に差があります。Arduino でも Spresense のように表示させたいです。
分と秒を表示させたいのですが、Arduino では分の値が表示されません。
<Spresense>
time setting
0' 0"
<Arduino>
time setting
' 0"
該当のソースコード
Arduino
#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27, 20, 4);// set the LCD address to 0x27 for a 16int timeWait;int timeMin;int timeSec; void setup(){} void loop(){timeWait = 0;timeWait = timeWait + val_3MIN * 180; // val_3MINオンのとき180秒timeWait = timeWait + val_2MIN * 120;timeWait = timeWait + val_1MIN * 60;timeWait = timeWait + val_30SEC * 30; timeMin = timeWait / 60;timeSec = timeWait % 60; lcd.setCursor(0,0);char tsetting[] = "";sprintf(tsetting, "%-20s", "time setting");lcd.print(tsetting); // time setting 時間設定lcd.setCursor(0,1);char tMin[] = "";char tSec[] = "";sprintf(tMin, "%2d", timeMin);sprintf(tSec, "%2d", timeSec);lcd.print(tMin);lcd.print("'");lcd.print(tSec);lcd.print('"');}
試したこと
・変数の型に問題があるかと考えていくつか試しましたが、改善されませんでした。
・分の値を2度表示するようスケッチを書き換えると、分の値が表示されました。
<表示> 0' 0' 0"
しかし、分の値を変更しようとデジタルピンの状態を変化させても(GNDに落す)分の値は変わりませんでした。分の表示1回のスケッチの場合、秒の値を変化させると表示も変化していました。なので、分の値2回表示も正常な動作は得られておりません。
<スケッチ>
lcd.print(tMin);
lcd.print("'");
lcd.print(tMin);
lcd.print("'");
lcd.print(tSec);
lcd.print('"');
補足情報(FW/ツールのバージョンなど)
なし
0 コメント