DAC Unit

Dac2 类用于与 GP8413 15 位数模转换器(DAC)进行接口通信,可将数字信号转换为两路模拟电压输出,输出范围为 0-5V 和 0-10V。

支持以下产品:

DACUnit

MicroPython 应用示例:

 1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
 2#
 3# SPDX-License-Identifier: MIT
 4
 5import os, sys, io
 6import M5
 7from M5 import *
 8from hardware import *
 9from unit import DACUnit
10
11
12label0 = None
13label1 = None
14label2 = None
15label3 = None
16i2c0 = None
17dac_0 = None
18
19
20v = None
21
22
23def btnA_wasClicked_event(state):  # noqa: N802
24    global label0, label1, label2, label3, i2c0, dac_0, v
25    if v >= 0.1:
26        v = v - 0.1
27    dac_0.set_voltage(v)
28
29
30def btnB_wasClicked_event(state):  # noqa: N802
31    global label0, label1, label2, label3, i2c0, dac_0, v
32    if v < 3.3:
33        v = v + 0.1
34    dac_0.set_voltage(v)
35
36
37def btnC_wasClicked_event(state):  # noqa: N802
38    global label0, label1, label2, label3, i2c0, dac_0, v
39    v = 0
40    dac_0.set_voltage(v)
41
42
43def setup():
44    global label0, label1, label2, label3, i2c0, dac_0, v
45
46    M5.begin()
47    Widgets.fillScreen(0x222222)
48    label0 = Widgets.Label("label0", 133, 110, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18)
49    label1 = Widgets.Label("-", 60, 210, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24)
50    label2 = Widgets.Label("+", 143, 210, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24)
51    label3 = Widgets.Label("reset", 214, 210, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu24)
52
53    BtnA.setCallback(type=BtnA.CB_TYPE.WAS_CLICKED, cb=btnA_wasClicked_event)
54    BtnB.setCallback(type=BtnB.CB_TYPE.WAS_CLICKED, cb=btnB_wasClicked_event)
55    BtnC.setCallback(type=BtnC.CB_TYPE.WAS_CLICKED, cb=btnC_wasClicked_event)
56
57    i2c0 = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
58    dac_0 = DACUnit(i2c0)
59    v = 0
60
61
62def loop():
63    global label0, label1, label2, label3, i2c0, dac_0, v
64    M5.update()
65    label0.setText(str(dac_0.get_voltage()))
66
67
68if __name__ == "__main__":
69    try:
70        setup()
71        while True:
72            loop()
73    except (Exception, KeyboardInterrupt) as e:
74        try:
75            from utility import print_error_msg
76
77            print_error_msg(e)
78        except ImportError:
79            print("please update to latest firmware")

UiFlow2 应用示例

example.png

dac_core_example.m5f2

class DACUnit

Constructors

class DACUnit(i2c: I2C, address: int = 0x60, vdd: float = 5.0, vout: float = 3.3)

创建一个 DACUnit 对象。

参数:
  • i2c – I2C 对象

  • address – I2C 地址

  • vdd – 供电电压

  • vout – 输出电压

UIFLOW2:

init.png

Methods

DACUnit.get_value() int

获取 DAC 的当前值。

返回:

DAC 值,16 位无符号值。

UIFLOW2:

get_value.png

DACUnit.get_voltage() float

获取 DAC 的当前电压。

返回:

DAC 电压值(float)。

UIFLOW2:

get_voltage.png

DACUnit.set_value(value: int) None

设置 DAC 的值。

参数:

value – DAC 值,16 位无符号值。

UIFLOW2:

set_value.png

DACUnit.set_voltage(voltage: float) None

设置 DAC 的电压。

参数:

voltage – 以 float 表示的 DAC 电压。电压必须在 0 到 3.3 V 之间。

UIFLOW2:

set_voltage.png

DACUnit.get_raw_value() int

获取 DAC 的原始值。

返回:

原始 DAC 值,作为 12 位无符号值。

UIFLOW2:

get_raw_value.png

DACUnit.set_raw_value(value: int) None

设置 DAC 的原始值。

参数:

value – 原始 DAC 值,作为 12 位无符号值。

UIFLOW2:

set_raw_value.png

DACUnit.get_normalized_value() float

获取 DAC 的归一化值。

返回:

归一化后的 DAC 值(float)。

UIFLOW2:

get_normalized_value.png

DACUnit.set_normalized_value(value: float) None

设置 DAC 的归一化值。

参数:

value – 归一化后的 DAC 值(float)。

UIFLOW2:

set_normalized_value.png

DACUnit.save_to_eeprom() None

将当前 DAC 值保存到 EEPROM。

UIFLOW2:

save_to_eeprom.png