You've already forked uiflow-micropython
mirror of
https://github.com/m5stack/uiflow-micropython.git
synced 2026-05-20 10:39:27 -07:00
e099fc94c2
Signed-off-by: hlym123 <lwylwt@qq.com>
146 lines
3.3 KiB
Python
146 lines
3.3 KiB
Python
# SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
import os, sys, io
|
|
import M5
|
|
from M5 import *
|
|
from hardware import IR
|
|
from hardware.stackchan import StackChan
|
|
|
|
|
|
label_title = None
|
|
label_tx_addr = None
|
|
label_tx_data = None
|
|
label_rx_addr = None
|
|
label_rx_data = None
|
|
ir = None
|
|
stackchan = None
|
|
ir_data = None
|
|
ir_addr = None
|
|
tx_data = None
|
|
ir_tx = None
|
|
tx_addr = None
|
|
|
|
|
|
def ir_rx_event(_data, _addr, _ctrl):
|
|
global \
|
|
label_title, \
|
|
label_tx_addr, \
|
|
label_tx_data, \
|
|
label_rx_addr, \
|
|
label_rx_data, \
|
|
ir, \
|
|
stackchan, \
|
|
ir_data, \
|
|
ir_addr, \
|
|
tx_data, \
|
|
ir_tx, \
|
|
tx_addr
|
|
ir_data = _data
|
|
ir_addr = _addr
|
|
label_rx_addr.setText(str((str("RX Addr: ") + str(ir_addr))))
|
|
label_rx_data.setText(str((str("RX Data: ") + str(ir_data))))
|
|
Speaker.tone(700, 100)
|
|
|
|
|
|
def btn_pwr_was_clicked_event(state):
|
|
global \
|
|
label_title, \
|
|
label_tx_addr, \
|
|
label_tx_data, \
|
|
label_rx_addr, \
|
|
label_rx_data, \
|
|
ir, \
|
|
stackchan, \
|
|
ir_data, \
|
|
ir_addr, \
|
|
tx_data, \
|
|
ir_tx, \
|
|
tx_addr
|
|
tx_data = (tx_data if isinstance(tx_data, (int, float)) else 0) + 1
|
|
if tx_data > 255:
|
|
tx_data = 0
|
|
ir.tx(tx_addr, tx_data)
|
|
label_tx_addr.setText(str((str("TX Addr: ") + str(tx_addr))))
|
|
label_tx_data.setText(str((str("TX Data: ") + str(tx_data))))
|
|
|
|
|
|
def setup():
|
|
global \
|
|
label_title, \
|
|
label_tx_addr, \
|
|
label_tx_data, \
|
|
label_rx_addr, \
|
|
label_rx_data, \
|
|
ir, \
|
|
stackchan, \
|
|
ir_data, \
|
|
ir_addr, \
|
|
tx_data, \
|
|
ir_tx, \
|
|
tx_addr
|
|
|
|
M5.begin()
|
|
Widgets.setRotation(1)
|
|
Widgets.fillScreen(0x000000)
|
|
label_title = Widgets.Label(
|
|
"IR TX & RX Example", 41, 5, 1.0, 0x0DC9F4, 0x000000, Widgets.FONTS.Montserrat24
|
|
)
|
|
label_tx_addr = Widgets.Label(
|
|
"TX Addr:", 9, 59, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.Montserrat18
|
|
)
|
|
label_tx_data = Widgets.Label(
|
|
"TX Data:", 170, 59, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.Montserrat18
|
|
)
|
|
label_rx_addr = Widgets.Label(
|
|
"RX Addr:", 10, 100, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.Montserrat18
|
|
)
|
|
label_rx_data = Widgets.Label(
|
|
"RX Data:", 170, 100, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.Montserrat18
|
|
)
|
|
|
|
BtnPWR.setCallback(type=BtnPWR.CB_TYPE.WAS_CLICKED, cb=btn_pwr_was_clicked_event)
|
|
|
|
stackchan = StackChan(i2c=1, uart=1)
|
|
ir = IR()
|
|
ir.rx_cb(ir_rx_event)
|
|
tx_addr = 1
|
|
tx_data = 0
|
|
Speaker.begin()
|
|
Speaker.setVolumePercentage(0.5)
|
|
label_tx_addr.setText(str((str("TX Addr: ") + str(tx_addr))))
|
|
|
|
|
|
def loop():
|
|
global \
|
|
label_title, \
|
|
label_tx_addr, \
|
|
label_tx_data, \
|
|
label_rx_addr, \
|
|
label_rx_data, \
|
|
ir, \
|
|
stackchan, \
|
|
ir_data, \
|
|
ir_addr, \
|
|
tx_data, \
|
|
ir_tx, \
|
|
tx_addr
|
|
M5.update()
|
|
if ir_tx:
|
|
ir_tx = False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
setup()
|
|
while True:
|
|
loop()
|
|
except (Exception, KeyboardInterrupt) as e:
|
|
try:
|
|
from utility import print_error_msg
|
|
|
|
print_error_msg(e)
|
|
except ImportError:
|
|
print("please update to latest firmware")
|