ESP32-C6+MicroPythonでAQM1602を簡単制御!1行クリア関数付きLCDライブラリ

ESP32-C6+MicroPythonでAQM1602を簡単制御!1行クリア関数付きLCDライブラリ
スポンサーリンク

MicroPythonを使えば、ESP32シリーズでI²Cデバイスを簡単に制御できます。
今回は、秋月電子などで入手できるAQM1602(I²CキャラクタLCD)を、
ESP32-C6とMicroPythonで動かすための自作ライブラリ
を紹介します。

このライブラリでは、文字列だけでなく整数(int)・浮動小数点(float)・文字(chr)型のデータも
そのまま表示できます。さらに便利な1行だけをクリアする関数
も追加しました。
LCD表示をよりスマートに扱えるようになります。
2025年11月21日複数のライブラリーをi2cバスの競合なしで使えるように一部変更しました。

スポンサーリンク

使用部品と環境

項目内容
マイコンESP32-C6(例:Seeed XIAO ESP32C6)
LCDモジュールAQM1602(I²C接続タイプ)
開発環境MicroPython(Thonny推奨)
通信方式ソフトI²C(SoftI2C使用)

🔌接続例

ソフトi2cを使っていますので、SCL SDA ピンは自由に設定することができ、今回GPI01、GPI00にしました。

AQM1602端子ESP32-C6ピン
VDD3.3V
GNDGND
SCLGPIO1
SDAGPIO0

ライブラリファイル「AQM_D.py」

以下のコードを「AQM_D.py」という名前でESP32-C6に保存します。
これを読み込むことで、LCDを簡単に操作できます。

# AQM_D.py
import time
class AQM1602_Disp:
    def __init__(self, i2c,addr=0x3E):
        self.i2c = i2c
        self.addr = addr
    def send(self, data, mode):
        """データ送信(コマンド or データ)"""
        self.i2c.writeto(self.addr, bytes([mode]) + bytes([data]))
    def lcd_init(self):
        """LCD初期化"""
        cmds = [0x38, 0x39, 0x14, 0x70, 0x56, 0x6C]
        for c in cmds:
            self.send(c, 0x00)
        time.sleep_ms(200)
        for c in [0x38, 0x0C, 0x01]:
            self.send(c, 0x00)
        time.sleep_ms(2)
    def set_cursor(self, x, y):
        """カーソル位置設定(x:0-15, y:0-1)"""
        addr = 0x80 + x + 0x40 * y
        self.send(addr, 0x00)
    def lcd_print(self, data):
        """文字列・数値などをLCDに表示"""
        if isinstance(data, (int, float)):
            s = str(data)
        elif isinstance(data, str):
            s = data
        elif isinstance(data, bytes):
            s = data.decode()
        elif isinstance(data, chr):
            s = data
        else:
            s = str(data)
        for ch in s:
            self.send(ord(ch), 0x40)
    def clear_line(self, y):
        """指定した行(y)をスペースでクリアし、カーソルを行頭に戻す"""
        self.set_cursor(0, y)
        for _ in range(16):  # 16文字LCD用
            self.lcd_print(" ")
        self.set_cursor(0, y)

メインスクリプト例(test_lcd.py)

from AQM_D import AQM1602_Disp
from machine import Pin, SoftI2C
import time
i2c = SoftI2C(scl=Pin(1), sda=Pin(0)) #ソフトi2c作る
AQM = AQM1602_Disp(i2c)        #渡す
AQM.lcd_init()

AQM.set_cursor(0, 0)
AQM.lcd_print("Hello LCD!")
AQM.set_cursor(0, 1)
AQM.lcd_print("ESP32-C6 Test")

time.sleep(2)
AQM.clear_line(1)          # 2行目をクリア
AQM.lcd_print("Line Cleared!")

✅実行結果イメージ

Hello LCD!
Line Cleared!

ファイルの配置手順

  • ThonnyでESP32-C6を接続
  • 「AQM_D.py」をESP32のルートに保存
  • test_lcd.pyを別名で保存して実行
  • LCDに文字が表示されれば成功!

関数のまとめ

関数名説明
lcd_init()LCDを初期化
set_cursor(x, y)カーソル位置を指定
lcd_print(data)文字列・数値を表示
clear_line(y)指定した行を消去し行頭に戻す

🧩応用アイデア

  • センサー値(温度・湿度など)を定期的にLCDに表示
  • clear_line()を使って数値部分だけ更新
  • I²Cバス共有で、BME280やRTCと同時使用も可能

🏁まとめ

ESP32-C6とMicroPythonを組み合わせると、
I²C接続のLCDモジュールをシンプルなコードで扱うことができます。

今回の「AQM1602_Disp」クラスは、数値や文字列を簡単に表示できるだけでなく、
便利な**1行クリア関数 clear_line()**で更新制御もスムーズになりました。

このように自分専用の小さなライブラリを作ることで、
プロジェクトの再利用性や開発スピードが大幅に向上します。
ぜひ、あなたのESP32開発にも取り入れてみてください。

タイトルとURLをコピーしました