LoginSignup
2
3

More than 5 years have passed since last update.

ラズパイにやっすいLCDディスプレイをつないでI2Cで通信させて使う

Last updated at Posted at 2019-04-19

せっかく登録したのに記事も書かないのはアレなので、しょうもない内容ですが同類の初心者に少しでも役だててもらえると嬉しいです。
あとマークダウンの書き方の練習。でも半角スペース使わなくても改行するんですね。

目的

  • 計測補助ツールとしてラズパイを活用する。
  • 表示系としてLCDディスプレイ(I2C)を使用する
  • やっすいのでなんとかしたい
  • 簡単になんとかしたい

使うもの

  • ラズパイ2&Raspbian:会社で遊んでいるので、プライベートでは3を買いたい。
  • waves 1602 IIC/I2C/TWI LCD液晶 モジュール Arduino:700円以下だったので

方法

参考にしたページ

Raspberry Piで学ぶ電子工作でオソヨーのLCDを使ってみました。
https://became-free.com/osoyoo-lcd/
Drive i2c LCD Screen with Raspberry Pi
http://osoyoo.com/2016/06/drive-i2c-lcd-screen-with-raspberry-pi/

設定手順

  • 上のURLのページをみて作業します。以上!
  • だと怒られるので以下に補足程度に書きます。基本はURLとググルほにゃくでいける
  • それでもダメならコードをググればなんとかなる。と思う。

設定I2c有効はGUIでもできるのでたぶんみんな大丈夫。(じゃないですかね)
nanoつかうところでちょっとん?となると思うので、
オソヨーさんのページ(下URL)の通りなのですが


sudo nano /etc/modules

とターミナルで入力すると

11.jpg

こんな感じの画面になります。nanoっていうエディタで/etc/modulesってとこを開いています。
ここに使うモジュールを追加していくわけですね。(んだとおもってます)

modulesファイルに次の2行が存在しない場合は追加します。
i2c-bcm2708
i2c-dev
次にCtrl XとYesを入力してファイルを保存します。

↑のとおり入力して操作してやります。文字列はコピペでおk
あとはほんとURLの通りで

smbusとi2c pythonライブラリのインストール
端末に次のコマンドを入力します。


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

aptgetの更新とsmbusのインストールですね。
再起動はいるそうなのでやりました。なしでもいいとかはわかりません。

確認と実行

ここまできたら後はディスプレイを接続した状態でやります。
むろんURL先のとおりに接続します。画像用意は大変。
そして以下のコマンドを送るとI2Cで接続されているアドレス一覧を見れます。

sudo i2cdetect -y 1
#または
sudo i2cdetect -y 0

1と0はバスを示しています。どちらかに3Fとか27がいるはず。
そいつがルパn…ディスプレイのアドレスです
どんな表示かって?↑のURLを…みれば…

2つ表示されてる?どちらのバスにもなんか居る?
そこまでできる方は僕より上級者ですね。ぼくわかんないや

そしていよいよサンプルプログラムを動作させます。

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

上記はネット環境が必要です。aptgetでも必要だけど
wgetでURLから "i2clcdb.py" をダウンロードしてきています。
でpythonで起動してます。これpython3でやりたければ、3をつけてあげます。

でI/Oアドレスがディスプレイのモデルで違うようなので、あなたが買ったやつ次第では

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

を試すと幸せになれるやもしれません。

プログラムの編集について

でも表示させるのにサンプルのままなわけないでしょ。ってことで
以下の部分がサンプルの最下層なはずです。

python:i2clcdb.py
~~~~

def main():
  # Main program block

  # Initialise display
  lcd_init()

  while True:

    # Send some test
    lcd_string("Created by         <",LCD_LINE_1)
    lcd_string("Osoyoo.com        <",LCD_LINE_2)

    time.sleep(3)

    # Send some more text
    lcd_string("> Tutorial Url:",LCD_LINE_1)
    lcd_string("> http://osoyoo.com",LCD_LINE_2)

    time.sleep(3)

if __name__ == '__main__':

  try:
    main()
  except KeyboardInterrupt:
    pass
  finally:
    lcd_byte(0x01, LCD_CMD)

ここの↓の部分で


    # Send some test
    lcd_string("Created by         <",LCD_LINE_1) #一行目に" "の中を表示
    lcd_string("Osoyoo.com        <",LCD_LINE_2) #二行目に" "のなかを表示

    time.sleep(3) #三秒待って

    # Send some more text #こっちに表示を更新する
    lcd_string("> Tutorial Url:",LCD_LINE_1) #同上
    lcd_string("> http://osoyoo.com",LCD_LINE_2) #同上

    time.sleep(3) #また三秒待つ

ということをやってますので、自分で変更したらいろいろできます。
実際に使うとなれば def main を適当な名前に変えて
自分のコードに import i2clcdb といれてから
関数として呼び出すのがスマートだし早いのでは。
自分は更新のタイミングをいろいろ細工したかったので、結局書き足して使いました。
なんてところはまた別の人の開設をみていただければと思います。

というわけで、すべてのビギナーに幸あれ。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3