大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイでACM1602NIを使おう

著者:國松亜紗子
公開日:2019/05/27
最終更新日:2019/05/27
カテゴリー:技術情報

こんにちは。國松です。

i2c接続に関する騒動も一段落?しましたので今回はやっとi2c接続のLCDキャラクターモジュールACM1602NIを接続して動かしていきたいと思います。

ラズパイのi2c接続に関する設定は済んでいるものとして説明をしていきます。

ACM1602NIには16文字2行表示できるキャラクターLCDです。

ACM1602NIを使う時の注意点

・i2cdetectが使えない。

i2cdetectを実行するとハングアップしてしまうのでLCDの電源を入れ直す必要があります。

・baudrateを50000に設定する必要がある。

設定の方法は/boot/config.txtファイルにdtparam = i2c-baudrate = 50000を追記します。

 

ラズパイとACM1602NIの接続

ACM1602NIラズパイ半固定ボリューム
1 VSSGND右の足((ブレッドボードの縦列を利用してラズパイのGDNに接続)
2 VDD3.3V左の足(ブレッドボードの縦列を利用してラズパイの3.3vに接続)
3 VO真ん中の足
4 SCLi2c SCL(GPIO3)
5 SDAi2c SDV(GPIO2)
6 BL+(バックライト+)未接続

(接続図)

 

i2cデバイスの接続の確認

ACM1602NIではi2cdetectが使えないので以下のlcdの初期化コマンドを打ち込んで書き込みができるかを確認します。

i2cset -y 1 0x50 0x00 0x01

ここでError: Write failedと表示されるたらラズパイとの接続がうまくいっていません。もしT型接続コネクタを使っていた場合それをやめてラズパイのGPIOピンに直接接続するとうまくいく事があります。

文字を表示

i2cset -y 1 0x50 0x00 0x01  #lcdディスプレイの初期化

i2cset -y 1 0x50 0x00 0x38  

i2cset -y 1 0x50 0x00 0x0c

i2cset -y 1 0x50 0x00 0x06  #ここまでディスプレイの初期化

i2cset -y 1 0x50 0x00 0x41  #A

i2cset -y 1 0x50 0x00 0x42  #B

i2cset -y 1 0x50 0x00 0x43  #C

ABCと無事に表示されました。

プログラムで文字を表示

参考サイト: DIY環境

#ライブラリーをインポート
import smbus
from time import sleep

i2c = smbus.SMBus(1) # 1 is bus number
lcd_addr = 0x50 
_command=0x00
_data=0x80
_clear=0x01
_home=0x02
_mode = 0x38 #8bit 2line 5×8dot
display_On=0x0c
LCD_2ndline=0x40+0x80


def command(code):
    i2c.write_byte_data(lcd_addr,_command, code)
    sleep(0.2)

def data(code):
    i2c.write_byte_data(lcd_addr, _data, code)
    sleep(0.2)

def write_lcd(text):
    bin = text.encode("utf-8")
    for ch in bin:
        i2c.write_byte_data(lcd_addr, _data, ch)
     

def init():
    command(_mode)
    command(_clear)
    command(display_On)
    
#main
init()
command(_clear)
write_lcd("Hello World!!")
command(LCD_2ndline)
write_lcd("Raspberry Pi")

i2cには大分苦しめられましたが四苦八苦しながらも文字を表示することができました。

 

    前の記事 :
    上に戻る