Knob 模块
模块介绍
旋钮(电位器)驱动模块,用于读取模拟电位器的旋转位置。支持将原始 ADC 值映射为指定范围的浮点或整数值,提供百分比、映射值等便捷属性,使用简单。
硬件引脚说明
| 引脚名称 | 全称/含义 | 接线颜色 | 功能描述 |
|---|---|---|---|
| S | Signal/信号 | 黄色 | 数据传输引脚,用于读取旋钮模拟信号(需支持 ADC 功能) |
| V | Voltage/电源 | 红色 | 电源电压输入,为设备提供工作电压 |
| G | Ground/地线 | 黑色 | 接地引脚,完成电路回路 |
初始化参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| pin | Pin | 无 | 支持 ADC 功能的 machine.Pin实例(如 ESP32 的 GPIO32-39) |
| min_val | int/float | 0 | 映射范围最小值 |
| max_val | int/float | 100 | 映射范围最大值 |
| adc_bits | int | 12 | ADC 位数(决定最大读数,12 位对应 0~4095) |
导入和实例创建
python
from machine import Pin # 导入Pin模块
from knob import Knob # 导入Knob驱动模块
# 初始化旋钮,连接到 GPIO34(需支持 ADC 功能),映射到 0~100
knob = Knob(pin=Pin(34), min_val=0, max_val=100) # 创建Knob实例核心属性方法
| 属性或方法 | 参数 | 返回类型 | 说明 |
|---|---|---|---|
| read() | 无 | int | 读取原始 ADC 数值 |
| percent | 无 | float | 返回百分比(0.0 ~ 100.0),保留 1 位小数 |
| value | 无 | float | 返回映射到 min_val ~ max_val 之间的浮点值 |
| value_int | 无 | int | 返回映射到 min_val ~ max_val 之间的整数值 |
使用示例
python
from machine import Pin
from knob import Knob
from time import sleep_ms
# 初始化旋钮,连接到 GPIO34(需支持 ADC 功能),映射到 0~100
knob = Knob(pin=Pin(34), min_val=0, max_val=100)
while True:
print("原始:", knob.read())
print("百分比:", knob.percent)
print("映射值:", knob.value_int)
sleep_ms(100) # 配合延时使用,防止程序过载注意事项
引脚与硬件要求
- 确保所使用的引脚支持 ADC 输入(如 ESP32 上的 GPIO32、GPIO34、GPIO35、GPIO36、GPIO39 等)
- 外部电位器应正确连接:两端接电源与地,中间抽头接指定 pin
使用技巧
- 在 while True 循环中请配合延时函数使用,防止程序过载
技术细节
- ADC 分辨率因主控而异(如 ESP32 默认为 12 位,即 0~4095),可通过 adc_bits 参数调整