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

如何修改代码实现模拟摇杆输入控制舵机转动速度而非目标位置

代码修改方案

你需要新增全局变量存储舵机当前角度,同时增加摇杆死区避免回中时舵机抖动,实现逻辑如下:

全局变量定义

在setup()函数外新增如下变量:

// 存储舵机当前角度,初始值可设为中位90
int currentServoAngle = 90;
// 摇杆死区范围,避免回中时舵机误动
const int JOY_DEADZONE_LOW = 480;
const int JOY_DEADZONE_HIGH = 544;
// 最大转动速度:每次循环最大调整的角度值,可按需修改
const int MAX_SPEED = 3;

主循环控制代码

loop()中的控制逻辑修改为:

int joyInput = analogRead(joyY1);
int angleStep = 0;

// 摇杆输入映射为角度增量
if (joyInput < JOY_DEADZONE_LOW) {
  // 摇杆往一个方向推,映射为负增量(角度减小)
  angleStep = map(joyInput, 0, JOY_DEADZONE_LOW, -MAX_SPEED, 0);
} else if (joyInput > JOY_DEADZONE_HIGH) {
  // 摇杆往另一个方向推,映射为正增量(角度增大)
  angleStep = map(joyInput, JOY_DEADZONE_HIGH, 1023, 0, MAX_SPEED);
}
// 死区范围内angleStep保持为0,舵机不转动

// 更新当前角度,同时限制在0-180的合法范围内
currentServoAngle = constrain(currentServoAngle + angleStep, 0, 180);
// 输出角度到舵机
servo2.write(currentServoAngle);
delay(10);

参数调整说明

  • 死区范围:如果摇杆回中时舵机还在缓慢移动,可以适当调大JOY_DEADZONE_LOW和JOY_DEADZONE_HIGH的差值
  • 转动速度:调整MAX_SPEED的数值即可修改舵机最快转动速度,数值越大转动越快
  • 响应灵敏度:修改delay()的毫秒值,数值越小舵机响应越快、转动越流畅

内容的提问来源于stack exchange,提问作者Joseph Mahma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:15:10