こんにちは、「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](/notion/439fa247-199a-48ab-8fd7-4f5fa6015618/image.jpg)
それでは、Raspberry Pi PicoとLCD1602を接続した回路図のイメージは以下の通りです。
SDAはGPIO18(I2C1 SDA)、SCLはGPIO19(I2C 1SC)につなぎました。
![Image in a image block](/notion/4f62f1d3-1985-4bee-aa72-0e4124b721a7/LCD1602_%E3%83%96%E3%83%AC%E3%83%83%E3%83%89%E3%83%9C%E3%83%BC%E3%83%89.jpg)
まず実施すべきことは、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](/notion/0f95fe2a-7f32-477a-875a-31c85d931577/Untitled.png)
【その2】へ続きます。