树莓派Pico HID音量控制CircuitPython代码报__gt__类型错误求助
问题解决:TypeError: unsupported types for gt: 'int', 'NoneType'
错误原因
第一次循环执行时,last_position初始值为None,当代码进入if position > last_position判断时,尝试将整数类型的编码器位置与None做大小比较,直接触发类型错误。此外你的代码还存在两处关键缺失:
- 未导入
time模块,却调用了time.sleep() - 未初始化HID ConsumerControl对象,
cc变量未定义
修正后的完整代码
# SPDX-License-Identifier: MIT import rotaryio import board import time from adafruit_hid.consumer_control import ConsumerControl from adafruit_hid.consumer_control_code import ConsumerControlCode import usb_hid # 初始化HID设备 cc = ConsumerControl(usb_hid.devices) encoder = rotaryio.IncrementalEncoder(board.GP12, board.GP13) # 初始化为编码器当前位置,避免None值比较问题 last_position = encoder.position while True: position = encoder.position if position != last_position: if position > last_position: cc.send(ConsumerControlCode.VOLUME_INCREMENT) print("Volume up") elif position < last_position: cc.send(ConsumerControlCode.VOLUME_DECREMENT) print("Volume down") # 控制触发频率,避免单次旋转多次触发 time.sleep(0.05) last_position = position
关键修改说明
- 初始化
last_position:直接用encoder.position初始化,避免第一次循环时的None值比较 - 补充必要导入与初始化:添加
time模块导入,初始化ConsumerControl对象,确保cc.send()能正常调用 - 优化循环逻辑:移除冗余的
last_position is None判断,调整sleep位置,避免重复设置last_position
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

