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 則留言:

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

    回覆刪除
  2. 我前陣子有小玩一下 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. 重新編譯

    回覆刪除
  3. 感謝,
    一直以來,都是用您的blog來學習arduino.

    真是感謝

    回覆刪除
  4. 不客氣

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

    回覆刪除
  5. 不好意思,又來請教問題了

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

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

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

    回覆刪除
  6. 用 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

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

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

    回覆刪除
  9. 這個 library 是用 Hardware I2C,所以只能用 pin 4 & pin 5 接腳

    回覆刪除
  10. 剛剛發現一個叫作 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
    改好後記得分享一下啊 ^^

    回覆刪除
  11. 最近要段考
    沒時間研究
    改天在寫寫看
    先收下囉 謝謝 ^^

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

    kc

    回覆刪除

注意:只有此網誌的成員可以留言。