Using the Unit 8Encoder ・ 使用 Unit 8Encoder
M5StackのUnit 8Encoderをコントローラーに接続する最小構成。配線とBOMつき。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| AtomS3 | Controller | grove_i2c, i2c, spi, gpio, usb_c | official page — $15.5 |
| Unit 8Encoder | unit | grove_i2c | official page — $14.95 |
M5Stack AtomS3とUnit 8EncoderをGrove I2Cケーブルで接続する、最小構成の組み立てガイドです。Unit 8Encoderは8つのロータリーエンコーダーを搭載し、回転と押し込みを検出できます。AtomS3のI2Cポート(Port.A)に接続するだけで、簡単にエンコーダー入力を利用できます。
# M5Stack AtomS3 + Unit 8Encoder (I2C)
# Wiring: Unit 8Encoder -> AtomS3 Port.A (red Grove I2C)
import time
from machine import Pin, I2C
from m5stack import lcd
# AtomS3 I2C pins for Port.A: SDA=GPIO1, SCL=GPIO2
i2c = I2C(0, scl=Pin(2), sda=Pin(1), freq=400000)
# Unit 8Encoder I2C address (default 0x41)
ENCODER_ADDR = 0x41
# Register addresses (from Unit 8Encoder datasheet)
REG_ENC_VALUE = 0x10 # 16-bit encoder value (2 bytes per encoder)
REG_BUTTON = 0x20 # button status (1 byte)
def read_encoder(channel):
"""Read encoder value for channel 0-7"""
buf = i2c.readfrom_mem(ENCODER_ADDR, REG_ENC_VALUE + channel*2, 2)
return (buf[0] << 8) | buf[1]
def read_button(channel):
"""Read button state for channel 0-7 (0=pressed, 1=released)"""
buf = i2c.readfrom_mem(ENCODER_ADDR, REG_BUTTON + channel, 1)
return buf[0]
while True:
lcd.clear()
for ch in range(8):
val = read_encoder(ch)
btn = read_button(ch)
lcd.print('Ch%d: %d btn=%d' % (ch, val, btn), 10, 10 + ch*15)
time.sleep(0.1)
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。