如何用arduino控制伺服电机

时间:2019-07-15 19:47:29

标签: c++ arduino servo

我在pwn和伺服电机编码上看到了很多视频,但无法理解arduino中伺服电机编码的工作原理。 我的主要困惑是,以下代码延迟的确切目的是什么。 当我们说Serve.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
  }

1 个答案:

答案 0 :(得分:1)

代码试图使伺服器从0180度相对缓慢地运动。 10 ms181步等于1.81 seconds

如果不是所有伺服器,大多数伺服器的速度都比仅从0直线移动到180的速度快得多。

此代码的一个问题是您不知道伺服器的初始位置是什么。例如,如果初始位置为180,则它将快速跳至0,然后慢慢移回180。

还请注意,大多数伺服器每隔20毫秒左右就受到一个信号的控制,因此,如果改变信号的频率更高,则可能导致出现问题(例如抖动/振动/噪声/...)。