Help with UNIT IR and NanoC6 in Uiflow2
-
Hi. I usually use M5 products with esphome. I an completely novice with UIflow2 and mycropython. I would like some help using the unit IR to decode a ac remote. I followed the video example on m5docs, and I have an error.
Here is the code:
import os, sys, io import M5 from M5 import * from unit import IRUnit ir_0 = None data = None addr = None def ir_0_rx_event(_data, _addr, _ctrl): global ir_0, data, addr data = _data addr = _addr print(data) def setup(): global ir_0, data, addr M5.begin() ir_0 = IRUnit((1, 2)) ir_0.rx_cb(ir_0_rx_event) data = 0 addr = 27 def loop(): global ir_0, data, addr M5.update() 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")
I get error:
Traceback (most recent call last): File "<stdin>", line 25, in <module> File "<stdin>", line 17, in setup File "unit/ir.py", line 24, in rx_cb File "driver/ir/nec.py", line 116, in __init__ File "driver/ir/nec.py", line 67, in __init__ File "driver/ir/receiver.py", line 47, in __init__ ValueError: invalid Timer number
The only thing that is different from the YouTube video is instead of setting a label to print the data value I am printing it to console, could this be the problem?
-
The "invalid Timer number" error occurs because the IRUnit is trying to use a hardware timer that's either unavailable or already in use on your M5 device. ESP32-based boards have limited hardware timers (usually 4, IDs 0-3), and the default timer allocation in the IR library might conflict with other system functions.
Solution:Explicitly specify a valid timer ID when initializing the IRUnit. Modify your setup code to include the timer_id parameter with a value between 0-3:
ir_0 = IRUnit((1, 2), timer_id=1) # Try timer IDs 0, 1, 2, or 3Troubleshooting Tips:
Test different timer IDs (0-3) if the first attempt fails
Ensure no other libraries/features are using the same timer (e.g., PWM, other sensors)
Verify your M5 device's firmware is up-to-date via UIFlow2