Using the Unit DAC2 ・ 使用 Unit DAC2
M5StackのUnit DAC2をコントローラーに接続する最小構成。配線とBOMつき。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| AtomS3 Lite | Controller | grove_i2c, gpio, usb_c | official page — $7.5 |
| Unit DAC2 | unit | grove_i2c | official page — $7.5 |
AtomS3 LiteとUnit DAC2をI2Cで接続し、デジタル信号を0-5Vまたは0-10Vのアナログ電圧に変換する最小構成のビルドです。Unit DAC2はGP8413チップを搭載し、2チャンネルの独立したアナログ出力を提供します。
# AtomS3 Lite + Unit DAC2 (I2C DAC)
# Wiring: Unit DAC2 -> AtomS3 Lite Port.A (red, I2C)
import machine
import time
# I2C configuration for AtomS3 Lite Port.A
# Default I2C pins: SDA=GPIO8, SCL=GPIO9
I2C_SDA = 8
I2C_SCL = 9
# Unit DAC2 I2C address (0x58 for GP8413)
DAC_ADDR = 0x58
# Initialize I2C
i2c = machine.I2C(0, sda=machine.Pin(I2C_SDA), scl=machine.Pin(I2C_SCL), freq=400000)
def dac_output(channel, voltage, range_10v=False):
"""
Set DAC output voltage.
channel: 0 or 1
voltage: 0-5V (range_10v=False) or 0-10V (range_10v=True)
"""
if range_10v:
# 0-10V range: 15-bit, 0-32767 corresponds to 0-10V
code = int(voltage / 10.0 * 32767)
else:
# 0-5V range: 15-bit, 0-32767 corresponds to 0-5V
code = int(voltage / 5.0 * 32767)
# Ensure code is within 0-32767
code = max(0, min(32767, code))
# Build command: 0x00 for channel 0, 0x10 for channel 1, then 2 bytes of code (big-endian)
if channel == 0:
cmd = 0x00
else:
cmd = 0x10
data = bytes([cmd, (code >> 8) & 0xFF, code & 0xFF])
i2c.writeto(DAC_ADDR, data)
# Example: set channel 0 to 1.5V (0-5V range), channel 1 to 3.0V (0-5V range)
dac_output(0, 1.5, range_10v=False)
dac_output(1, 3.0, range_10v=False)
print("DAC outputs set. Channel 0: 1.5V, Channel 1: 3.0V")
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。