【Raspberry Pi Pico】I2C接続のLCDディスプレイを使う方法【MicroPython】

【Raspberry Pi Pico】I2C接続でLCDディスプレイを使う方法【MicroPython】

こんにちは! けい(Twitter)です。

今回は、Raspberry Pi PicoでI2C接続のLCDディスプレイを使う方法についてまとめていきたいと思います。

必要な物

ラズピコ

LCDディスプレイ(16×2)

LCDディスプレイは複数の種類ありますが、Arduinoなどで一般的に使われることの多い、16×2のLCDディスプレイを使用します。

その他

created by Rinker
Sintron
¥298 (2021/07/26 11:33:08時点 Amazon調べ-詳細)

下準備

MicroPythonの環境構築

MicroPythonを使用しますので、MicroPythonの環境構築が必要です。

当ブログでも以前の記事で紹介していますので、ラズパイを使っての環境構築は参考にしてみてください。

ライブラリのダウンロード

LCDディスプレイのI2C接続のプログラムを書こうと思うと、結構大変です。

しかもMicroPython用のプログラムを作成している方がgithubで公開してくれているので、そちらをありがたく使わせて頂きます。url

また、Thonny IDEを使ってラズパイからRaspberry Pi Picoにプログラムを書きこむ前提で進めていきます。
勿論、windowsおよびMacでも大丈夫です。

githubからダウンロード

ラズパイでターミナルを開きます。
~/Downloads/に保存したいので、cdコマンドで移動します。

$ cd ~/Downloads/

次に、git clone コマンドでgithubリポジトリからダウンロードします。

$ git clone https://github.com/dhylands/python_lcd.git

これで、~/Downloads/に「python_lcd」というフォルダが作成されます。

ラズピコへプログラムを書きこみ

ライブラリのダウンロードが完了したので、次はラズピコに必要なpythonファイルをセーブしましょう。

まず、Thonny IDEを開きます。

次に、「Open」をクリックします。

先ほどダウンロードしたフォルダ、「~/Downloads/python_lcd/lcd」まで移動します。

そうすると、下の画像のようにいくつかのプログラムがあると思います。

その中で赤枠で囲った部分、「esp8266_i2c_lcd.py」,「lcd_api.py」が必要なプログラムなのでそれらを選択して、プログラムを開きます。

プログラムを開けたら、ラズピコにプログラムをセーブしていきます。
「File→Save as」をクリックします。

MicroPython device」をクリックします。

ファイル名は、それぞれ「esp8266_i2c_lcd.py」,「lcd_api.py」としました。(ここは変えていません)

これでラズピコへのプログラムの書き込みは完了です。

回路図

4本の線を繋ぐだけですが、一応のせておきます。
今回使うLCDモジュールは5V駆動なので、VBUSに繋ぎます。

I2Cアドレスの確認

ラズピコとの配線が完了したら、接続もできているかの確認も兼ねてI2Cアドレスの確認をしていきましょう。

import machine
sda=machine.Pin(0)
scl=machine.Pin(1)
i2c=machine.I2C(0,sda=sda, scl=scl, freq=400000)
print(i2c.scan())

このコードを実行すると、接続が出来ていると数字が画面に出力されます。

接続が出来ていない場合、[]が出力されます。

今回の私の場合、LCDのアドレスは39でした。
つまり、16進数に換算したアドレスは0x27です。

基本的にアドレスは16進数で用いるので、プログラム中では0x27を使用します。

メインプログラム

ライブライの準備は整ったので、それを用いてプログラムを書いていきましょう。
「I2C_ADDR」は先ほど確認した0x27とします。

import time
import machine
from esp8266_i2c_lcd import I2cLcd

I2C_ADDR = 0x27
sda = machine.Pin(0)
scl = machine.Pin(1)

# I2C start
i2c = machine.I2C(0,sda=sda, scl=scl, freq=400000)
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
lcd.putstr("It Works!\nSecond Line")
time.sleep(3)
lcd.clear()
time.sleep(3)
lcd.putstr("Hello\nI'm METAELE")

プログラム解説

基本的にLCDの出力に必要な大事なコードはこの2つです。

  • lcd.putstr()
  • lcd.clear()

putstrの中に文字列を渡すことで、その文字を画面に出力できます。
文字列の”\n”の部分で2行目に改行できます。

また、clearで画面に出力された文字を消すことができます。

実行結果(動画)

プログラムを実行した様子を動画にしました。