2017年12月13日 星期三

arduino溫濕度計輸出LCD(二) LCD顯示Hello World!

LCD輸出真得很折騰...
試了很多次無法成功,因為不同廠牌的I2C程式碼有點不同,可能要注意

一樣丟關鍵字餵狗"LCD arduino"
【自造學堂】Arduino如何透過I2C控制LCD模組
Arduino 使用 1602 IIC(I2C) LCD 點陣液晶模組   (這個文章的輸入部份我試不出來)

先按圖索驥接好裝置

開啟arduino程式→草稿碼→匯入程式庫→管理程式庫搜尋"newliquidcrystal" →選第一個"Newliquidcrystal_1.3.5"→ 安裝

根據第一篇文章修改成以下樣子,上傳到板子就可以了

// Arduino IDE 內建
#include <Wire.h>
// LCD I2C Library,從這裡可以下載:
// https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
#include <LiquidCrystal_I2C.h>

// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
// 設定 LCD I2C 位址,兩種不同晶片有不同設定方式,如果第一個不行請改第二個
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup() {
  // 初始化 LCD,一行 16 的字元,共 2 行,預設開啟背光
  lcd.begin(16, 2);
  // 閃爍三次
  for(int i = 0; i < 3; i++) {
  lcd.backlight(); // 開啟背光
  delay(250);
  lcd.noBacklight(); // 關閉背光
  delay(250);
  }
  lcd.backlight();
  // 輸出初始化文字
  // 設定游標位置在第一行行首
  lcd.setCursor(0, 0);
  lcd.print("LCDtest");
  delay(1000);
  // 設定游標位置在第二行行首
  lcd.setCursor(0, 1);
  lcd.print("Hello, World!");
  delay(6000);
  // 顯示清除
  lcd.clear();
}

void loop() {
  // 設定游標位置在第一行行首
  lcd.setCursor(0, 0);
  lcd.print("count");
  // 設定游標位置在第二行行首
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}



注意這兩行,會根據板子要設定成不一樣的程式
// 設定 LCD I2C 位址,兩種不同晶片有不同設定方式,如果第一個不行請改第二個
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
//LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
我買的兩塊板子就有不同

上面那塊要設定成LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
下面那塊要設定成LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
如果設定錯誤還是可以上傳到板子,不過LCD完全沒有反應,所以可能在這邊要注意一下。

沒有留言:

張貼留言