85
Raspberry Pi PicoでI2C LCDディスプレイを使う方法

LCD画面は便利で、私たちの生活のあらゆる場面で見受けられます。駅、パーキングメーター、自動販売機などでは、接続された機器の操作方法を示す短いメッセージが表示されています。LCD画面は、Raspberry Pi Picoプロジェクトやその他のRaspberry Piプロジェクトで情報を伝達する楽しい方法です。16×2の画面にテキスト、数字、文字を表示できる明るく大きな画面を備えています。16は画面に16個の文字が表示され、2は行数を表しています。LCD画面には20×2、20×4など、様々な構成がありますが、最も一般的なのは16×2です。

このチュートリアルでは、付属の I2C バックパックを使用して、LCD スクリーン (HD44780) を I2C インターフェイス経由で Raspberry Pi Pico に接続する方法を学習します。次に、Thonny エディターを使用して MicroPython ライブラリをインストールし、それを使用してディスプレイにテキストを書き込み、カーソルとバックライトを制御する方法を学習します。

LCDスクリーンはI2Cプロトコルを使用してRaspberry Pi Picoとインターフェースします。つまり、必要なのはこれだけです。 

  •  MicroPython を実行するRaspberry Pi Pico。Raspberry Pi Pico の設定方法をご覧ください。 
  •  メス-オスジャンパーワイヤー4本
  •  I2C HD44780 LCDスクリーン 

I2C LCDスクリーンをRaspberry Pi Picoに接続する方法 

LCDスクリーン付きRaspberry Pi Pico

(画像提供:Tom's Hardware)

1.画面のGND を Pico の任意の GND (黒線) に接続します。

2. VDD / VCCをPicoのVBUS(赤線)に接続します。注意:これは5Vピンです。

3. SDA を I2C0 SDA (GP0、物理ピン 1、オレンジ色のワイヤ) に接続します。

4. SCK / SCLをI2C0 SCL(GP1、物理ピン2、黄色のワイヤ)に接続します。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

5. Raspberry Pi Pico をコンピューターに接続し、Thonny アプリケーションを開きます。 

画像

1

3

LCDスクリーン付きRaspberry Pi Pico
(画像提供:Tom's Hardware)

6. 「STOP」をクリックして、 Pico が接続されていることを確認します。

7.このリンク を開き、ページからテキストをコピーします。

8. Thonnyで空のファイルを作成し、そこにテキストを貼り付けます。ファイルをRaspberry Pi Picoにlcd_api.pyとして保存します。

9.このリンク を開き、ページからテキストをコピーします

10. Thonnyで空のファイルを作成しそこにテキストを貼り付けます。ファイルをpico_i2c_lcd.pyとしてRaspberry Pi Picoに保存します。

 Raspberry Pi Pico で I2C LCD スクリーンをプログラミングする

ライブラリがインストールされたら、ライブラリの機能をデモンストレーションするテスト スクリプトの作成を開始できます。

1. Thonny で新しい空のファイルを作成します。

2.事前に記述されたコードのライブラリを4つインポートします。最初の2つはMachineライブラリのもので、I2CとGPIOピンを使用できるようにします。次に、Timeライブラリのsleep関数をインポートして、コードを一時停止できるようにします。最後に、LCD画面を操作するためのI2Cライブラリをインポートします。

from machine import I2C, Pin
from time import sleep
from pico_i2c_lcd import I2cLcd

3.   I2Cプロトコルを介してLCD画面と通信するための オブジェクトi2cを作成します。ここではI2Cチャネル0を使用し、SDAをGP0に、SCLをGP1にマッピングします。

i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)

4.変数I2C_ADDRを作成します。 この変数には、バスをスキャンしたときに最初に見つかったI2Cアドレスが格納されます。接続されているI2Cデバイスは1つだけなので、スキャンで返される最初の[0]アドレスのみを確認する必要があります。 

I2C_ADDR = i2c.scan()[0]

5.  ライブラリのI2C接続を設定するためのオブジェクトlcdを作成します。このオブジェクトは、 i2c オブジェクトで設定するI2Cピン、 I2C_ADDRで設定する画面アドレス、そして最後に2行16列の画面であることを指定します。 

lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)

6.  コードを継続的に実行するためのループを作成します。ループの最初の行では、ディスプレイの I2C アドレスが Thonny の Python Shell に出力されます。 

while True: print(I2C_ADDR)

7.  昔の端末インターフェースと同様に、  LCD ディスプレイのカーソルを点滅するように設定します。

 lcd.blink_cursor_on()

8.  画面に2行のテキストを出力します。最初の行では「I2C Address:」と、I2C_ADDRオブジェクトに格納されているアドレスが出力されます。次に改行文字「\n」を挿入し、「Tom's Hardware」(または任意の文字列)という行を出力します。テキストが読み上げられるまで2秒間待機します。 

 lcd.putstr("I2C Address:"+str(I2C_ADDR)+"\n") lcd.putstr("Tom's Hardware") sleep(2)

9.  前のコードセクションを繰り返す前に画面をクリアしますが、今回はLCDディスプレイのI2Cアドレスを16進値で表示します。I2Cバックパックに使用されているPCF8574Tチップには0x20と0x27の2つのアドレスがあり、どのアドレスを使用しているかを把握しておくと便利です。特に複数のI2Cデバイスを使用している場合は、バス上で衝突が発生する可能性があるためです。 

 lcd.clear() lcd.putstr("I2C Address:"+str(hex(I2C_ADDR))+"\n") lcd.putstr("Tom's Hardware")

10.  点滅しているカーソルをオフにし、画面をクリアして、別のメッセージ「バックライト テスト」を画面に印刷する準備をします。 

 lcd.blink_cursor_off() lcd.clear() lcd.putstr("Backlight Test")

11. LEDバックライトを点滅させるには、 10回繰り返すforループを使用します。0.2秒間バックライトを点灯し、同じ時間消灯します。バックライトがオフの状態でも、「Backlight Test」というテキストは画面に表示されたままになります。 

 for i in range(10): lcd.backlight_on() sleep(0.2) lcd.backlight_off() sleep(0.2)

12.  バックライトを再びオンにしてカーソルを非表示にします。点滅するカーソルは、伝えたい情報の見づらさを感じさせる場合があります。 

 lcd.backlight_on() lcd.hide_cursor()

13.   LCD画面に0から19までの数字を表示するforループを作成します。値を削除して次の値に置き換えるまで、0.4秒の遅延があることに注意してください。テキストを上書きすると文字化けしてしまうので、テキストを削除する必要があります。

 for i in range(20): lcd.putstr(str(i)) sleep(0.4) lcd.clear()

完全なコードリスト

from machine import I2C, Pin
from time import sleep
from pico_i2c_lcd import I2cLcd
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000) I2C_ADDR = i2c.scan()[0]
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
while True: print(I2C_ADDR) lcd.blink_cursor_on() lcd.putstr("I2C Address:"+str(I2C_ADDR)+"\n") lcd.putstr("Tom's Hardware") sleep(2) lcd.clear() lcd.putstr("I2C Address:"+str(hex(I2C_ADDR))+"\n") lcd.putstr("Tom's Hardware") sleep(2) lcd.blink_cursor_off() lcd.clear() lcd.putstr("Backlight Test") for i in range(10): lcd.backlight_on() sleep(0.2) lcd.backlight_off() sleep(0.2) lcd.backlight_on() lcd.hide_cursor() for i in range(20): lcd.putstr(str(i)) sleep(0.4) lcd.clear()

コードを保存して実行します。Thonnyの他のPythonスクリプトと同様に、 「ファイル」>>「保存」をクリックし、ファイルをRaspberry Pi Picoに保存します。ファイル名は「i2c_lcd_test.py」にすることをお勧めします。準備ができたら、緑色の再生ボタンをクリックしてコードを開始し、画面上でテストが実行されるのを確認します。