【问题标题】:how to control servo motor with arduino如何用arduino控制伺服电机
【发布时间】:2019-11-24 13:01:37
【问题描述】:

我看过很多关于 pwn 和伺服电机编码的视频,但无法理解伺服电机代码在 arduino 中的工作原理。 我的主要困惑是以下代码中延迟的确切目的是什么。 当我们说servo.write(180);不是说要180度吗? 这里的延迟有什么用? 几毫秒会导致伺服器正常工作或抖动或振动不移动或不正确旋转等。

包括

Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
  // in steps of 1 degree
 myservo.write(pos);  // tell servo to go to position in variable 'pos'
    delay(10); // waits 15ms for the servo to reach the position
  }

【问题讨论】:

    标签: c++ arduino servo


    【解决方案1】:

    代码试图让伺服系统相对缓慢地从0 移动到180 度数。 10 ms181 步数等于 1.81 seconds

    如果不是所有的话,大多数伺服系统都比你一次从 0 直接移动到 180 的伺服系统快得多。

    此代码的一个问题是您不知道伺服的初始位置是什么。比如初始位置是180,它会快速跳到0,然后慢慢回到180。

    另请注意,大多数伺服系统每 20 毫秒左右使用一个信号进行控制,因此更频繁地更改信号可能会导致问题(如抖动/振动/噪声/...)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多