You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:07:13