2012年9月3日 星期一

I2C 16x2 LCD 介紹

(本文同步發表於 OSSLab)

這是 I2C 16x2 LCD:

2012-09-02_23h47_48 dfrobot-i2c-twi-lcd1602-module-3-B

標準 LCD 需要比較多的腳位,I2C LCD 可以減少腳位的使用,而且接線也比較簡單。這個 I2C LCD 的特性如下:

  • 16x2 LCD,藍底白字,有背光
  • 走 I2C 介面,設備地址為 0x27
  • 可調整螢幕顯示對比
  • 5V 供電,相容於 Arduino
接線辦法

2012-09-02_23h45_01

參考上圖,接線方式為:

  • SDA – 接 Arduino 的 Analog Pin 4 (Arduino Mega 為 Pin 20)
  • SCL – 接 Arduino 的 Analog Pin 5 (Arduino Mega 為 Pin 21)
  • GND – 接 GND
  • VCC – 接 +5V
I2C LCD Library
範例程式

執行結果:

2012-09-02_23h44_23

參考資料

14 意見:

j_lo2005 提到...

Hi,
想請教一下,我使用eclipse來complier結果出現一堆錯誤,Wire.cpp,但使用arduino 1.0.1版本,卻正常,可以run. 不曉得coopermaa可以解惑嗎?
因為試著解,好幾天了,但沒成功
謝謝!
https://docs.google.com/open?id=0B5r_jdatGk_hdWRqMHVjdk1jbUU

cooper maa 提到...

我前陣子有小玩一下 Arduino Eclipse Plugin (http://coopermaa2nd.blogspot.tw/2012/10/arduino-eclipse-plugin_10.html)
你是用這個嗎?

你的 project 確實編譯過不了關,原因是 Wire library 裏還用到它所附的 twi library (位於 C:\arduino-1.0.1\libraries\Wire\utility)

我剛試了一下,已經找出方法了,你試試看:
1. 在你的 Project 上按右鍵選 Properties
2. 切到 C/C++ General > Path and Symbols
3. 在右邊的窗格選 GNU C++, 點 Add,輸入 C:\arduino-1.0.1\libraries\Wire\utility
4. 重新編譯

j_lo2005 提到...

感謝,
一直以來,都是用您的blog來學習arduino.

真是感謝

cooper maa 提到...

不客氣

之前我不曉得會有這編譯問題
有你的提問,我也因此學了一個經驗啊,哈~~

wola 提到...

不好意思,又來請教問題了

最近看上I2C+LCD的用法,因為只佔用兩個腳位,感覺還挺方便的

不過因為東西還沒有入手想先瞭解一下
我想顯示的字數超過16個字應該會分段到第二行去
那有沒有辦法直接一次顯示多行資訊呢?
例如
第一行顯示數值一
第二行顯示數值二之類的
因為手上的做品參數日益增多,想弄個LCD來顯示這些參數

如果cooper maa兄有經驗,能否提醒一下呢?
感激不盡^^

cooper maa 提到...

用 lcd.setCursor(col, row) 設定游標就行了,比如:

// 將游標設到第一行,即 column 0, row 0
lcd.setCursor(0, 0);
lcd.print("1st Line");

// 將游標設到第二行,即 column 0, row 1
lcd.setCursor(0, 0);
lcd.print("2nd Line");

很簡單吧!? 相關資訊可參考這篇:

http://coopermaa2nd.blogspot.tw/2010/12/arduino-lab9-2x16-lcd-world.html

wola 提到...

原來我文章看的不夠仔細,之前的教學就有提到了,真是不好意思^^a
總之,非常感謝Cooper maa的熱情回答^^b

cooper maa 提到...

不客氣啊,歡迎常來

梓宸唐 提到...

請問有辦法設定接腳嗎?
(不像文章講的 4 .5 接腳)

Cooper Maa 提到...

這個 library 是用 Hardware I2C,所以只能用 pin 4 & pin 5 接腳

梓宸唐 提到...

OK
了解
謝謝囉^^

Cooper Maa 提到...

剛剛發現一個叫作 SoftI2CMaster 的 library:
http://todbot.com/blog/2010/09/25/softi2cmaster-add-i2c-to-any-arduino-pins/

顧名思義,這個 SoftI2CMaster 便是軟體 I2C Library,可以讓你用任意 2 支腳位來做 I2C 通訊,不限於 Analog 4 & 5。

你可以試試用 SoftI2CMaster 改寫 I2C LCD Library
改好後記得分享一下啊 ^^

梓宸唐 提到...

最近要段考
沒時間研究
改天在寫寫看
先收下囉 謝謝 ^^

kc 提到...

Hi cooper maa你好,
我是初學者,想請教一下,如果我想用IR和16 X 2 LCD做個people counter,請問LCD果部份應該怎樣寫,IR果部份已經沒有問題,可以有trigger輸出,但唔知點寫在每次觸發輸入,LCD會自動加一,如果在同時在一個display內輸出兩組counter數字,是否只需改變輸出數字的位置就可以。
謝謝幫忙!

kc