Using the Unit ExtEncoder ・ 使用 Unit ExtEncoder
M5StackのUnit ExtEncoderをコントローラーに接続する最小構成。配線とBOMつき。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| ATOM Lite | Controller | grove_i2c, i2c, gpio | official page — $7.5 |
| Unit ExtEncoder | unit | grove_i2c, other:external encoder AB/ABZ signal input | official page — $5.95 |
ATOM LiteとUnit ExtEncoderをGrove I2Cケーブルで接続し、外部ロータリーエンコーダーの信号を読み取るための最小構成のビルドです。Unit ExtEncoderはSTM32F030を内蔵し、エンコーダーのAB/ABZ信号を処理してI2C経由でATOM Liteに送ります。
# M5Stack ATOM Lite + Unit ExtEncoder (I2C)
# Wiring: Unit ExtEncoder -> ATOM Lite Grove Port (I2C)
import time
from machine import Pin, I2C
# ATOM Lite I2C pins: SCL=G22, SDA=G21
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
# Unit ExtEncoder I2C address (default 0x40)
ENCODER_ADDR = 0x40
# Register addresses (from datasheet)
REG_CNT = 0x00 # 32-bit counter (4 bytes)
REG_ONE_PULSE = 0x04 # 1 pulse width (us)
# Initialize encoder: set 1 pulse width to 1000 us (optional)
i2c.writeto_mem(ENCODER_ADDR, REG_ONE_PULSE, b'\xe8\x03') # 1000 = 0x03E8
def read_counter():
data = i2c.readfrom_mem(ENCODER_ADDR, REG_CNT, 4)
value = int.from_bytes(data, 'little')
# Convert to signed 32-bit
if value >= 0x80000000:
value -= 0x100000000
return value
print("Unit ExtEncoder test. Rotate the encoder.")
while True:
count = read_counter()
print("Count:", count)
time.sleep(0.1)
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。