Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 5345|回復: 3
打印 上一主題 下一主題

I2C 1602LCD 螢幕顯示的問題

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-3-31 22:35:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位,我是ARDUINO的新手~最近有個關於I2C 1602LCD 螢幕顯示的問題
我發現我使用土壤濕度或者水位,因為他會有個位數跳到百位數的數值起伏,如果一開始是個位數還好,如果開始跳到十位數或者百位數再跳回十位或者個位數時,螢幕就會殘影十位數與百位數的數值,而造成數字上的判讀錯誤。
請問各位是如何克服這個問題的呢??

感謝~

用clear指令配合delay一秒雖然可以解決,但是螢幕一直閃閃閃好不舒服....

又或者能不能將土壤或者水位計的數值改為001,也就是三位數表現,不知道會不會解決(程式碼怎麼讓該數值以三位數表現呢)
2#
發表於 2016-4-1 06:27:31 | 只看該作者
本帖最後由 超新手 於 2016-4-1 08:26 編輯

除了剛開機(setup),執行clear及顯示必要的字
其他時候(loop),不要用 clear
也不要整個螢幕更新
用固定三位數
把游標移到百位數
每次更新只修改百十個三個數字
3#
 樓主| 發表於 2016-4-1 16:58:52 | 只看該作者
請問具體固定三位數的程式寫法該如何寫呢?
我目前寫的方式為
  lcd.setCursor(0, 0);
  lcd.print("M=");
  lcd.print(analogRead(0));

因為該數字會跳一位數或三位數,所以會有殘影....再麻煩各位大大了...
4#
發表於 2016-4-1 18:13:40 | 只看該作者
本帖最後由 超新手 於 2016-4-1 18:16 編輯

沒試過..有問題自己修改
void setup()
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("M=");
}
void loop()
{
  lcd.setCursor(2, 0);
  char str[8];
  sprintf(str, "%3d", analogRead(0));
  lcd.print(str);
  delay(1000);

}
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-15 03:20 , Processed in 0.185571 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表