Site cover image

Site icon image電子工作 ~ 50歳の手習い

本職はソフトウェアエンジニア。最近組み込みの仕事がよくあるので勉強がてら楽しんでます。

Raspberry Pi Picoに接続したLCDディスプレイに文字列を表示(MicroPython)【その1】

こんにちは、「MAKO」と言います。

今回の記事は、Raspberry Pi Pico にLCDディスプレイ(LCD1602) を接続し、MicroPythonを用いて文字列を表示する記事を書いてみたいと思います。

今回使用するLCDディスプレイは、16桁2行表示のもので、接続インターフェイスはI2C、接続ピンはVCC、GND、SDA、SCLの4ピンとなっております。

私の手元にあるのは学習用のキットに入っていたもので、こちらになります。

LCD1602のインターフェイス自体はパラレル8ピンとなっているのですが、I2Cバスの2本の信号線を使用して、8つのI/Oポートを拡張するICであるPCF8574ATの搭載されたボードがLCD1602の8品に接続されているために4ピンでの制御が可能となっています。

Image in a image block

それでは、Raspberry Pi PicoとLCD1602を接続した回路図のイメージは以下の通りです。

SDAはGPIO18(I2C1 SDA)、SCLはGPIO19(I2C 1SC)につなぎました。

Image in a image block

まず実施すべきことは、LCD1602のI2Cアドレスを調べることです。

I2Cアドレスにコマンドを発行することでLCD1602の操作を行います。

それではMicroPythonを用いてプログラムを書いてみましょう。

from machine import Pin, I2C

# I2C ピンを定義(自身のセットアップに合わせて変更してください)
i2c_sda_pin = 18
i2c_scl_pin = 19

# I2C を初期化
i2c = I2C(1, sda=Pin(i2c_sda_pin), scl=Pin(i2c_scl_pin), freq=400000)

# 接続されている I2C デバイスのアドレスをスキャン
def scan_i2c_devices():
    devices = i2c.scan()
    return devices

# I2C デバイスのアドレスを表示
print("Scanning I2C devices...")
device_addresses = scan_i2c_devices()
for address in device_addresses:
    print(f"Found device at address: 0x{address:02X}")

このプログラムをThonny上で実行してみた結果が以下です。

I2Cアドレスは 0x3F であることがわかりました。

Image in a image block

【その2】へ続きます。