我在使用github的 scottbez1/smartknob 工程。需要帮我解释上面的变量参数都管什么用。
20 2025-07-16 10:44
下面把 PB_SmartKnobConfig
里每个成员的中文含义、典型取值范围和对实际手感的影响一次讲清。
(以下结论基于官方示例及爱好者实测总结
)
表格
复制
字段 | 中文说明 | 如何影响手感/功能 |
---|---|---|
position |
当前逻辑档位(整数) | 旋钮一上电就从这格开始。改它只是改变起始点,不影响转动范围。 |
sub_position_unit |
“一格”再细分多少份 | 1.0=不可细分;0.1=一格内部还能停10个中间点。数值越小,旋钮越“丝滑”。 |
position_nonce |
版本号/校验字节 | 调完其他参数后把它+1,告诉固件“配置已更新”。 |
min_position max_position |
允许转动的最小/最大档位 | 二者差值=总共多少“格”。例如 0~11 就是 12 格旋钮;0~0 就是“按钮”模式。 |
position_width_radians |
每一格占多少弧度 | 实际转动角度=格数×本值。值越大,每格“跨度”越大,颗粒感明显;越小越细腻。一圈≈6.28 rad,可据此换算。 |
detent_strength_unit |
棘轮阻力强度(0~1) | 经过每一格时的“咔哒”力。0 完全没感觉,1 最硬。 |
endstop_strength_unit |
端点止挡强度(0~1) | 转到最左/最右时的“撞墙”力。想让旋钮在端点“吸住”就加大。 |
snap_point |
自动回弹阈值(0~1) | 在“弹簧回中”模式下,手松开时只要偏离中心的百分比<该值就会自动归位;>该值就留在当前格。 |
text |
屏幕显示文字 | 51 字节 UTF-8,旋钮中间 LCD 会用。 |
detent_positions_count detent_positions[5] |
自定义棘轮位置 | 不想每一格都“咔哒”时,把要咔哒的绝对位置写进数组,并把数量填到 count。例如 0,5,10 就只在这三格有阻力。 |
snap_point_bias |
回弹中心偏移 | 0=严格回中;>0 偏向顺时针,<0 偏向逆时针。可做出非对称手感。 |
led_hue |
环形 RGB 灯色相 | 0~255 映射到 HSV 色轮。例如 0 红、85 绿、170 蓝。 |
快速调参口诀
-
“一格多大角度”——改
position_width_radians
。 -
“颗粒粗还是细”——再改
sub_position_unit
。 -
“咔哒硬不硬”——调
detent_strength_unit
。 -
“到边撞墙狠不狠”——调
endstop_strength_unit
。 -
“要不要自动回中”——把
snap_point
设成 0~1;想完全自由就把min_position
/max_position
拉开,snap_point
设 1。
把这些参数组合就能得到官方演示里“视频时间轴”“音量旋钮”“弹簧回中”等完全不同的手感 。
全部评论