皆さんこんにちは。yossyです。
ラズピコで電子工作をしていると、ディスプレイに文字を表示したいと思うことがあると思います。
ラズピコでディスプレイに文字を表示する方法として、LCD1602というディスプレイを使う方法があります。
この記事では、Raspberry Pi PicoでLCD1602に文字を表示する方法を解説します。
LCD1602 ディスプレイとは?
まずは、LCD1602について解説していきます。
基本仕様
- 表示可能文字: 英数字、記号
- 表示形式: 16文字×2行
- インターフェース: パラレル接続またはI2C接続(アダプター使用時)
LCD1602は、16列2行のキャラクター(文字)表示が可能な液晶ディスプレイモジュールです。
1602は、16列と2行のことを表していたのです。
Amazonで購入することができるので、まだ持っていない人は下のボタンから購入できます!
アダプターと通信方式
このディスプレイは、アダプターを使うことでI2C接続で使用することができます。
I2Cとは、マイコンとパーツとの間での通信の方法です。
アダプターは標準でついていることが多いです。
下の画像の上がアダプタあり、下がアダプタなしです。

アダプターがない場合は購入することができるので、購入して自分ではんだ付けしましょう。
アダプターは下のボタンから購入できます。
使い方
それでは、LCD1602ディスプレイをRaspberry Pi Picoで使う方法について解説していきます。
このディスプレイを使うためには、まずラズピコにライブラリをインストールする必要があるので、インストールの方法を先に解説します。
ライブラリをインストール
まずライブラリをインストールするために、ライブラリのページにアクセスしましょう。
lcd_api.py(https://raw.githubusercontent.com/dhylands/python_lcd/master/lcd/lcd_api.py)
pico_i2c_lcd.py(https://raw.githubusercontent.com/T-622/RPI-PICO-I2C-LCD/main/pico_i2c_lcd.py)
この2つのコードをコピーして、Thonnyで新規ファイルを作成して貼り付けます。
貼り付けたらラズピコにそれぞれ名前をつけて保存しましょう。
プログラム
from machine import Pin, I2C
import utime
from pico_i2c_lcd import I2cLcd
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=400000) # i2cの初期化
lcd = I2cLcd(i2c, 0x27, 2, 16) #lcdオブジェクトを作成
while True:
lcd.putstr("Hello world!\n" + "Let's enjoy!") #\nを使うことで改行できる
utime.sleep(3)
lcd.move_to(0,0) #カーソルを0行目の0文字目に戻す
lcd.putstr("abcdefghijklmn\nopqrstuvwxyz")
utime.sleep(3)
lcd.clear() #画面の文字を消す
utime.sleep(3)
lcd.backlight_off() #バックライトを消す
utime.sleep(3)
lcd.backlight_on() #バックライトをつける
utime.sleep(3)
ポイントごとに解説します。
from machine import Pin, I2C
import utime
from pico_i2c_lcd import I2cLcd
まずは、使用するライブラリを読み込みます。
I2Cを使うのでi2cライブラリを読み込みます。また、先ほどのインストールしたpico_i2c_lcd.pyからI2cLcdライブラリを読み込みます。
lcd_api.pyは、pico_i2c_lcdの中で読み込まれているので、読み込む必要はありません。
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=400000) # i2cの初期化
lcd = I2cLcd(i2c, 0x27, 2, 16) #lcdオブジェクトを作成
次に、i2cとlcdの初期化をします。
lcdのオブジェクトを作成するときに、lcdのi2cアドレス(一般的に0x27)と何行何文字かを渡しています。
lcd.putstr("Hello world!\n" + "Let's enjoy!") #\nを使うことで改行できる
utime.sleep(3)
lcd.move_to(0,0) #カーソルを0行目の0文字目に戻す
lcd.putstr("abcdefghijklmn\nopqrstuvwxyz")
utime.sleep(3)
lcd.clear() #画面の文字を消す
utime.sleep(3)
lcd.backlight_off() #バックライトを消す
utime.sleep(3)
lcd.backlight_on() #バックライトをつける
utime.sleep(3)
このコードが、文字を表示している部分です
まずは1行目のputstr関数
文字列を渡すとLCDに表示してくれます。
次にmove_to関数
LCD1602はカーソルの概念があり、putstrで文字を表示するとその分カーソルがズレます。
そのカーソルを移動するのがmove_to関数です。
今回は0行0文字目に戻すために使用しました。
clear関数は、LCDに表示されている文字を消す関数です。
ついでにカーソルも0,0に戻してくれます。
backlight_on,off関数はその名前の通りバックライトをオン・オフする関数です。
配線
配線は次のように行います。
LCD1602(のアダプター)のピン | ラズピコのピン |
---|---|
VCC | VBUS(5V) |
GND | GND |
SDA | 16番ピン(SDA) |
SCL | 17番ピン(SCL) |
LCD1602は5Vで動くので、3.3VピンではなくUSB電源接続時5Vが供給されるVBUSピンに繋いでいます。
動作の様子

LCDディスプレイを接続して実行すると、Hello world!などが表示されたり、画面のバックライトが消えたりします。
画面の表示がおかしい場合はアダプターに明るさ調節ネジがあるので、それをドライバーで調節してみてください。
まとめ
今回はLCD1602ディスプレイをRaspberry Pi Picoで使う方法について解説しました。
ディスプレイに文字を表示できたら、センサーの値やメッセージを表示することができるので便利です。
もしよかったらみなさんも使ってみてください。