題:
LCD 16 * 02 I2C防護罩僅顯示第一個字符
AFract
2015-11-23 01:32:18 UTC
view on stackexchange narkive permalink

我有一個帶有Sunfounder套件的I2C液晶屏,它肯定是由DFRobot或類似的構造函數構建的(LCD上沒有寫東西),還有一個Arduino Uno R3副本。

我的問題是當我使用 lcd.print()在LCD上寫一個字符串時,僅會打印該字符串的第一個字符。我只能使用setCursor在其他位置上打印,但一次只能打印一個字符。

我試圖更改庫( https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-庫(LCD隨附的庫...),它的行為始終相同!

例如,這是一個非常簡單的程序,它表現出這種行為:

  #include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27,16,2); //將LCD地址設置為0x27以獲得16個字符和2行displayvoid setup(){lcd.init(); lcd.backlight();} void loop(){lcd.print(“ write”);延遲(1000); lcd.setCursor(10,0); lcd.print(“ p10”); lcd.setCursor(0,1); lcd.print(“ 0,1 write”); if((millis()/ 1000)%5 == 0){lcd.clear();延遲(1000); }}  

我最終得到類似這樣的東西:

  wp 0w  

在屏幕上(在 clear()。)

而不是類似的東西:

  write p10 0,1 writewrite  

lcd本身還不錯。我唯一能想到的就是我最近更新到了Arduino 1.6.6。

DFRobot的hello世界也不能正常工作(僅再次為第一個字符)(請注意,使其與我的液晶顯示器必須將地址從0x20更改為27)。

六 答案:
AFract
2015-12-01 23:58:16 UTC
view on stackexchange narkive permalink

那肯定是一個在1.6.6中出現的錯誤。有關參考,請參見 https://blog.arduino.cc/2015/11/03/arduino-ide-1-6-6-released-and- available-for-download /#comment-278766 https://forum.arduino.cc/index.php?topic=359652.0 http://forum.arduino.cc /index.php?topic=357312.msg2476987#msg2476987

最後一個鏈接似乎是通過 LCD I2C庫的更新版本提供的解決方案: https://github.com/marcoschwartz/LiquidCrystal_I2C(尚未嘗試)。

有些人說1.6.6有點混亂,但I2C庫也是如此;)。所以問題是:應該在哪裡固定?

James Waldby - jwpat7
2015-11-23 01:57:49 UTC
view on stackexchange narkive permalink

您的代碼部分包含

  #include <LiquidCrystal_I2C.h> .... LiquidCrystal_I2C lcd(0x27,16,2); //將LCD地址設置為0x27以獲得16個字符和2行displayvoid setup(){lcd.init(); lcd.backlight();}  

對於系統上 LiquidCrystal_I2C.h 中的所有構造函數,第二個和第三個參數是 EN RW ,即啟用和讀取/寫入背包針編號。他們沒有指定顯示的大小。 ,7); // 0x27是未修改背包的I2C總線地址

,代替了 lcd.init(); say

  lcd.begin(16,2); //對於16 x 2 LCD模塊 

注意, lcd.begin()將調用 init()

您好,謝謝您的回答。我提供的代碼以前可以正常工作,如果您沒有與我完全相同的ctor,您的LiquidCrystal_I2C庫應該有所不同。但是,我將與您一起嘗試一下,看看是否能解決我的問題。
kaiowas
2015-11-27 22:48:05 UTC
view on stackexchange narkive permalink

我是Arduino的新手(幾個小時前我剛開始學習它,現在我仍然可以站起來!),因此在考慮我說的任何事情時都要考慮到這一點,但是我傾向於同意這可能是1.6.6 IDE的問題。

在使用1.6.6的MultiLCD庫的Freematics MEGA2560 / 3.2“ SSD1289 LCD上,我得到了幾乎相同的症狀。根據上面的評論我卸載並安裝了1.6.5,然後重新編譯並上傳,它現在可以正確顯示...

您好,非常感謝您確認我所看到的行為。我還沒有時間尋找其他解決方案,例如jwpat7的建議。
rob
2015-12-02 07:17:46 UTC
view on stackexchange narkive permalink

我嘗試了AFract描述的解決方案,它解決了問題。 (對不起,我沒有足夠的聲譽,所以我無法回复他的評論。)

我在這裡獲得了新的LiquidCrystal_I2C庫: https://github.com/marcoschwartz/LiquidCrystal_I2C

有關代碼提交的信息在這裡: https://github.com/marcoschwartz/LiquidCrystal_I2C/pull/5

Sorin P.
2016-03-17 17:09:00 UTC
view on stackexchange narkive permalink

我在v1.6.7和v1.6.8上遇到了同樣的問題。我用其他答案中指定的新的'marcoschwartz'庫解決了該問題。

以前,我使用了相同的DFRobot庫,該庫在IDE 1.6.0上運行良好,直到我在v1.6.7上進行了升級。

歡迎使用Arduino Stack Exchange。 “謝謝”和“我也”的答案並沒有真正有用(http://meta.stackexchange.com/questions/256378/are-me-too-answers-considered-a-noisy-answer-detailed-in-常見問題解答)。對於您的情況,您確實提供了一些有趣的信息,但請記住這一點。僅當答案與給定的另一個答案不同並且可以實際回答該問題時,才應添加答案。
Alberto
2020-06-20 00:09:01 UTC
view on stackexchange narkive permalink

我有同樣的問題。我的LCD僅顯示一個字符。我下載並嘗試了LCD庫的docens,最後在IDE中安裝了一堆庫。經過數天試圖解決問題的努力,我決定清除IDE並刪除庫目錄(請注意,IDE可以從documents / arduino / library文件夾中獲取它們)。之後,我一個接一個地測試了LCD庫。如果無法使用,我將其刪除。在 https://github.com/marcoschwartz/LiquidCrystal_I2C上面發布的一個有效!



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...