pdf-icon

UIFlow Guide

UIFlow 1.0 Blockly

Event

Unit

UIFlow 1.0 Project

Unit timerpwr

案例程序

通过 TimerPWR 模块获取电池、USB 和 Grove 端口的状态信息,设置模块的各种功能(如按钮、Grove 输出、OLED 背光等),并处理与设备睡眠和唤醒相关的事件。

from m5stack import *
from m5ui import *
from uiflow import *
import unit

timerpwr_1 = unit.get(unit.TIMERPWR, unit.PORTA)

timerpwr_1.init_i2c_address(0x56)

timerpwr_1.set_oled_backlight_status(True)
timerpwr_1.set_wakeup_trigger(timerpwr_1.TRIG_ALL)
while True:
  timerpwr_1.sleep_cycle(0, 0, 5, 0, 0, 5)
  print(timerpwr_1.get_battery_voltage())
  print(timerpwr_1.get_battery_current())
  print(timerpwr_1.get_usb_voltage())
  print(timerpwr_1.get_usb_current())
  print(timerpwr_1.get_grove_voltage())
  print(timerpwr_1.get_grove_current())
  print(timerpwr_1.get_firmware_version())
  wait_ms(2)

功能说明

timerpwr_1.init_i2c_address(0x56)
  • 初始化 TimerPWR 模块的 I2C 地址为 0x56。该地址用于通过 I2C 总线与模块通信。
timerpwr_1.get_battery_voltage()
  • 获取当前电池的电压值。
timerpwr_1.get_battery_current()
  • 获取当前电池的电流值。
timerpwr_1.get_usb_voltage()
  • 获取当前 USB 端口的电压。
timerpwr_1.get_usb_current()
  • 获取当前 USB 端口的电流。
timerpwr_1.get_grove_voltage()
  • 获取与 Grove 端口连接的外设的电压。
timerpwr_1.get_grove_current()
  • 获取 Grove 接口的电流信息。
timerpwr_1.get_button_status(0)
  • 0 是按钮的编号,返回值为按钮是否被按下的状态。
timerpwr_1.get_grove_output_status()
  • 获返回当前 Grove 输出端口的启用或禁用状态。
timerpwr_1.get_oled_backlight_status()
  • 返回当前 OLED 显示屏背光是否打开。
timerpwr_1.get_firmware_version()
  • 获取 TimerPWR 模块当前固件的版本号。
timerpwr_1.save_data_to_flash()
  • 将数据保存到闪存中。此块将模块中的数据(如电池、电流等)保存到持久存储中,以便以后使用。
timerpwr_1.set_grove_output_status(True)
  • 设置 Grove 输出端口状态为启用(True)。这个块启用 Grove 端口的输出功能。
timerpwr_1.set_oled_backlight_status(True)
  • 设置 OLED 背光为启用(True)。这个块打开 OLED 屏幕的背光。
timerpwr_1.set_wakeup_trigger(timerpwr_1.TRIG_ALL)
  • 设置唤醒触发条件为所有事件触发(TRIG_ALL)。这个块配置模块在任何事件(如按钮按下、USB 插入等)发生时触发唤醒。
timerpwr_1.set_sleep_trigger(timerpwr_1.TRIG_ALL)
  • 设置睡眠触发条件为所有事件触发(TRIG_ALL)。这个块配置模块在任何事件发生时会进入睡眠状态,节省电力。
timerpwr_1.sleep_once(0, 0, 5, 0, 0, 5)
  • 设置一次性睡眠模式,参数是定时睡眠的配置(例如每隔5秒进入睡眠状态)。这将使设备进入睡眠模式,并在指定的时间后唤醒。
timerpwr_1.sleep_cycle(0, 0, 5, 0, 0, 5)
  • 设置循环睡眠模式,这个块会使设备周期性地进入睡眠并唤醒。例如,每过 5 秒进入睡眠模式。
def timerpwr_1_btna_released_event(args):
  # global params
  pass
timerpwr_1.set_callback(timerpwr_1.EVENT_BUTTONA_RELEASED, timerpwr_1_btna_released_event)
  • 为 EVENT_BUTTONA_RELEASED 事件设置回调函数。当按下按钮 A 后释放时,会触发 timerpwr_1_btna_released_event 函数。args 参数包含触发事件时的相关数据。
def timerpwr_1_charging_event(args):
  # global params
  pass
timerpwr_1.set_callback(timerpwr_1.EVENT_CHARGING, timerpwr_1_charging_event)
  • 为 EVENT_CHARGING 事件设置回调函数。这个事件在充电状态发生变化时触发,回调函数是 timerpwr_1_charging_event。
def timerpwr_1_usb_inserted_event(args):
  # global params
  pass
timerpwr_1.set_callback(timerpwr_1.EVENT_USB_INSERTED, timerpwr_1_usb_inserted_event)
  • 为 EVENT_USB_INSERTED 事件设置回调函数。这个事件在 USB 插入时触发,回调函数是 timerpwr_1_usb_inserted_event。
timerpwr_1.tick()
  • 更新并处理 TimerPWR 模块的内部状态。通常在循环中调用,确保模块的工作状态和事件的处理。
On This Page