M5StackでUnit 8Encoder を使う

Using the Unit 8Encoder ・ 使用 Unit 8Encoder

M5StackのUnit 8Encoderをコントローラーに接続する最小構成。配線とBOMつき。

この構成をエディタで開く・編集する →

部品リスト(BOM)

部品役割ポートリンク・価格
AtomS3Controllergrove_i2c, i2c, spi, gpio, usb_cofficial page — $15.5
Unit 8Encoderunitgrove_i2cofficial page — $14.95

配線

作り方

M5Stack AtomS3とUnit 8EncoderをGrove I2Cケーブルで接続する、最小構成の組み立てガイドです。Unit 8Encoderは8つのロータリーエンコーダーを搭載し、回転と押し込みを検出できます。AtomS3のI2Cポート(Port.A)に接続するだけで、簡単にエンコーダー入力を利用できます。

  1. 部品を用意する — 必要なもの:M5Stack AtomS3本体、Unit 8Encoder、Groveケーブル(4ピン、I2C用、赤色ポート対応)。
  2. Groveケーブルを接続する — Groveケーブルの一端をUnit 8EncoderのGroveポートに差し込みます。コネクタは一方向にしか入らないので、向きを確認して軽く押し込みます。
  3. AtomS3に接続する — Groveケーブルのもう一端をAtomS3のPort.A(赤色のGroveポート)に差し込みます。Port.AはI2Cバス専用です。
  4. 電源を入れる — USB-CケーブルでAtomS3をパソコンまたはUSB電源に接続します。AtomS3の画面が点灯し、起動します。
  5. コードを書き込む — パソコンでUIFlowまたはThonnyなどのツールを使い、AtomS3にMicroPythonファームウェアが入っていることを確認します。下のコードをコピーしてデバイスに書き込み、実行します。
  6. 動作を確認する — コードを実行すると、AtomS3の画面に各エンコーダーの値が表示されます。エンコーダーを回したり押したりして、値が変化することを確認します。

サンプルコード(micropython)

# 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® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。