【Arduino】 LCD 跑馬燈,顯示捲動字串

【Arduino】LCD跑馬燈

本次主要使用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 功能?”

最後!! 你喜歡這篇文章,或是這篇文章對你有幫助的話,也歡迎分享出去給需要的人,訂閱免費電子報獲得最新資訊😄😄😄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *