# 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() 清除螢幕, 以免產生亂碼。