本次主要使用for迴圈來練習,讓LCD以跑馬燈的形式來讓字串顯示。
還沒使用過LCD的朋友們,可以先參考這篇”【Arduino】LCD I2C模組使用教學“。
LCD跑馬燈程式說明
我想要顯示的效果是字串從右邊慢慢捲動到左邊,直到整組字串消失,之後再從頭出現,如此循環。
在思考時跟試驗時,我把程式拆成兩個部分
第一部分,是字串從最右邊捲動到最左邊,利用for迴圈來讓起始顯示的座標從最右邊16,依序往左邊直到0。
for(int i=16;i>=0;i--){
lcd.setCursor(i,0);
lcd.print(string);
lcd.print(" ");
delay(500);
}
第二部分,是要讓字串前面消失,後面繼續往前跑。
因此使用擷取自串的函式String.substring(),其效果是可以選擇要從第幾個字擷取到第幾個字。
每次回圈都讓字串往後遞減一個字來選取,依此慢慢顯示到最後一個字。
for(int i=0; i<=string.length();i++){
lcd.setCursor(0,0);
lcd.print(string.substring(i+1,string.length()));//每次回圈把字串往後遞減一格來選取,並顯示到最後一個字。
lcd.print(" ");
delay(500);
}
把上述兩個程式碼結合在一起,就會是把字串完整的跑完了!
完整程式碼
#include <Wire.h> // I2C程式庫
#include <LiquidCrystal_I2C.h> // LCD_I2C模組程式庫
// LCD I2C位址,默認為0x27或0x3F,依據背板的晶片不同而有差異,16、2為LCD顯示器大小。
LiquidCrystal_I2C lcd(0x27, 16, 1); //最後放1,是為了讓LCD只顯示1行。
String Line="Hello World! Crazy Maker!"; //可更改成你要顯式的字串
void setup() {
// 初始化LCD
lcd.init();
lcd.backlight();
}
void loop() {
for(int i=16;i>=0;i--){
lcd.setCursor(i,0);
lcd.print(Line);
lcd.print(" ");
delay(500);
}
for(int i=0; i<=Line.length();i++){
lcd.setCursor(0,0);
lcd.print(Line.substring(i+1,Line.length()));
lcd.print(" ");
delay(500);
}
}
額外分享
在找資料的過程中,還有額外發現更省時省力的寫法,那就是使用LiquidCrystal_I2C函式庫的 Autoscroll功能!!
詳情請參閱“豐誌:如何使用 LiquidCrystal 函式庫的跑馬燈 Autoscroll 功能?”
最後!! 你喜歡這篇文章,或是這篇文章對你有幫助的話,也歡迎分享出去給需要的人,訂閱免費電子報獲得最新資訊😄😄😄