# LCD I2C操作 ### Arduino 一般專案使用的1602LCD液晶螢幕, 必需接許多線, 往往令人卻步。 {%youtube U2bLikIYz6A%} 影片來源https://www.youtube.com/watch?v=U2bLikIYz6A 由於接線複雜, 於是[買了這個I2C介面的轉接板](https://item.taobao.com/item.htm?spm=a1z09.2.0.0.68a92e8dp1LZ6C&id=40809855965&_u=k2fdfpsf250a),發現實在太方便了, 這樣用在專案的顯示上電路接線會容易許多!!![](https://i.imgur.com/WegjswU.png) 電路接法: ![](https://i.imgur.com/klksmaK.jpg) 上頭一整排的控制Pin腳對齊LCD, 轉接板與Arduino的接法: | 轉接板 | Arduino | | -------- | -------- | | VCC | 5V | | GND | GND | | SDA | SDA | | SCL | SCL | 打開Arduino開發環境, 先下載函式庫 ![](https://i.imgur.com/Zp6dfk6.png) 輸入LiquidCrystal I2C 搜尋, 安裝LiquidCrystal I2C (by Frank de Brabander) ![](https://i.imgur.com/mur8TPx.png) 開始寫程式 ``` #include <Wire.h> #include <LiquidCrystal_I2C.h> //宣告LCD的位址, 通常為0x27, 1602LCD 為 16個字元, 2列 LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Hello World!!"); lcd.setCursor(0, 1); lcd.print("GoodJob!!"); } void loop() { } ``` 其中, 需要注意的是I2C的位址要正確, 1602LCD通常為0x27, 可以用[掃描](https://hackmd.io/Iw7mov2oTfqZugWm6Wm6pA/)的方式取得。 上傳後, 搭拉~ ![](https://i.imgur.com/kGbPVg1.jpg) ### 樹莓派RaspberryPi 同樣的方法, 用在樹莓派上也行 ![](https://i.imgur.com/jfvEZKV.jpg) ![](https://i.imgur.com/OAyTjnL.png) 先找出 1602LCD 的位址 ``` #i2cdetect -y 1 ``` ![](https://i.imgur.com/tXDBZEp.png) 開始寫程式吧~ 首先, 要先安裝RPLCD套件 ``` #pip3 install RPLCD ``` ![](https://i.imgur.com/II71G9p.png) ``` import sys import time from RPLCD.i2c import CharLCD lcd = CharLCD('PCF8574', address=0x27, port=1, backlight_enabled=True) lcd.clear() lcd.cursor_pos = (0, 0) lcd.write_string("Hello World!!") lcd.cursor_pos = (1, 0) lcd.write_string("Time: {}".format(time.strftime("%H:%M:%S"))) ``` 執行程式 ``` #python3 1602LCD_I2C.py ``` ![](https://i.imgur.com/2OLErio.jpg) #### 後記 1. 顯示時需先以 lcd.clear() 清除螢幕, 以免產生亂碼。