我在使用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 蓝。
快速调参口诀
  1. “一格多大角度”——改 position_width_radians
  2. “颗粒粗还是细”——再改 sub_position_unit
  3. “咔哒硬不硬”——调 detent_strength_unit
  4. “到边撞墙狠不狠”——调 endstop_strength_unit
  5. “要不要自动回中”——把 snap_point 设成 0~1;想完全自由就把 min_position / max_position 拉开,snap_point 设 1。
把这些参数组合就能得到官方演示里“视频时间轴”“音量旋钮”“弹簧回中”等完全不同的手感 。

全部评论

·