前回の記事 でRaspberry Piで16×2 LCDを作動するの方法を紹介しました、設定は簡単ですが、たくさんのジャンプワイヤが必要し、たくさんのGPIOポートも占有しまいました。

GPIOポートを節約のため、今回はI2Cを通じで、唯4本のワイヤーを使用し、 LCDを制御します。

LACC2006AD-9

Raspbian OSを装着済みのMicroSDカードが必要です。

Step 1: 回路図(画像をクリックして拡大イメージを表示):

PI-LCDI2C_bb PiI2C Pin

GND(Pin 39 or Pin 9) GND
5V(Pin2) VCC
SDA(Pin 3/GPIO 2) SDA
SCL(Pin 5/GPIO 3) SCL

Step 2:using raspi-config utilityでi2cを有効にする
Terminalで下記のコマンドを入力してくださいませ:

  • sudo raspi-config
  • Advance Optionsに入って、「-> I2C -> Enable I2C ->Finish」

    デバイスは自動的にrebootします。

    Piが再起動したら、config fileを編集必要です。Terminalで下記のコマンドを入力してくださいませ:

    sudo nano /etc/modules
    モジュールファイルで下記の内容を追加して下さい:
    i2c-bcm2708
    i2c-dev

    Ctrl+Xボダンを押して、Yを入力して、ファイルを保存して下さい。

    Step 3: smbusとi2c python libraryのインストールする
    Terminalで下記のコマンドを入力してくださいませ

    sudo apt-get update
    sudo apt-get install -y python-smbus i2c-tools
    sudo reboot

    Piが再起動したら、Terminalで下記のコマンドを入力して下さい:
    lsmod | grep i2c_
    i2c_bcm2708がリストに表示されるはずです。libraryが正しくインストールしたと分かります。もし、i2c_bcm2708が見えない場合、Step2と3を再度操作して下さい。

    Step 4:ハードウェアのテスト
    Terminalで下記のコマンドを入力して下さい:

    sudo i2cdetect -y 1
    or
    sudo i2cdetect -y 0

    下記のように、表示します:
    0 1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
    00:             — — — — — — — — — — — — —
    10: — — — — — — — — — — — — — — — —
    20: — — — — — — — — — — — — — — — —
    30: — — — — — — — — — — — — — — — 27
    40: — — — — — — — — — — — — — — — —
    50: — — — — — — — — — — — — — — — —
    60: — — — — — — — — — — — — — — — —
    70: — — — — — — — —

    数字なく、唯”– — –“と表示の場合、 回路の組み立ては問題あるあるいはソフトウエアのインストールが正しくないと判明できます。

    Step 5: Python Codeをダウンロードして、 projectを開始する:
    Terminalで下記のコマンドを入力して下さい:

    wget http://osoyoo.com/driver/i2clcda.py
    sudo python i2clcda.py

    errorがありましたら、下記のコマンドを試して下さい:

    wget http://osoyoo.com/driver/i2clcdb.py
    sudo python i2clcdb.py

    問題無ければ、LCDは下記の文字を表示します:

    Created by
    Osoyoo.com

    > Tutorial Url:
    > http://osoyoo.com

    Raspberry Piで何のerrorもないても、LCDで何も表示しないの場合、LCD裏のつまみを調整して、見て下さい~

    14 Comments

    • tarmbrester says:

      Why does my i2clcda.py or i2clcdb.py cause an error in line 109 and line 57 ERRno 5 input/output error?

      • elaine says:

        I test the LCD according to the tutorial, and it works without error.
        Do you add following two lines in modules file if they do not exist at step 2:
        i2c-bcm2708
        i2c-dev
        Do you see “– — –” sign in the list with any numbers?
        Pls confirm.

        • Morgan8 says:

          I am receiving the same errors as tarmbrester (line 57 and 109: Error no 5). The config file has: i2c-bcm2708 and i2c-dev. I also did get the matrix of”00: —” with number for the “sudo i2cdetect – y 1”.

          The black integrated circuit (next to the potentiometer)is hot to the touch. Does your chip in your setup get very hot?

    • Morgan8 says:

      I doubled checked the wiring before I turned it on the first time. Pin 2 (+5V) and pin 39 (gnd).

    • Morgan8 says:

      I afraid not. If “tarmbrester” (the original commenter) has solved his/her problem then I must have a bad board.

    • elaine says:

      Does your LCD has backlight when you connect with the board?
      If not, pls confirm whether there is a jumper cap at the I2C driver board.

    • Morgan8 says:

      Partial Solution:

      I made a wiring mistake. I had the header numbering wrong, VCC and GND reversed. On raspberry PI 3 with the usb pointing down the top left pin is number 2.

      When I run the program it runs but nothing appears. Adjusting the contrast quickly show some blocks but they then fade. When I disconnect one of the data lines the program errors out as expected. Any ideas? Is it possible there is damage from the voltage reversal?

    • AErhan says:

      Hi,
      I followed the process, at step 4 the result is very similar to what you have described, I also noticed that the backlight flashes when I run the command, which I presume the detection is successful.

      Step 5
      Downloaded both python codes but when I try to run I get the following:

      Traceback (most recent call last):
      file “i2clcda.py”, line 57, in lcd_byte
      bus.write_byte(I2C_ADDR, bits_high)
      IOError: [Errno 5] Input/output error

      Same happens both files ending with a and b. Seems both have LCD address incorrectly for my device.

      Is there a utility you can provide so that I can fidn out the LCD module address? It will be very useful.

      Thanks

    • ibkozi says:

      I am getting the following error when running the python code.

      Traceback (most recent call last):
      File “i2clcdb.py”, line 109, in
      lcd_byte(0x01, LCD_CMD)
      File “i2clcdb.py”, line 57, in lcd_byte
      bus.write_byte(I2C_ADDR, bits_high)
      IOError: [Errno 5] Input/output error

    Leave a Reply

    WordPress spam blocked by CleanTalk.
    Bombax Theme designed by itx