我在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
}
答案 0 :(得分:1)
代码试图使伺服器从0
到180
度相对缓慢地运动。 10 ms
乘181
步等于1.81 seconds
。
如果不是所有伺服器,大多数伺服器的速度都比仅从0直线移动到180的速度快得多。
此代码的一个问题是您不知道伺服器的初始位置是什么。例如,如果初始位置为180,则它将快速跳至0,然后慢慢移回180。
还请注意,大多数伺服器每隔20毫秒左右就受到一个信号的控制,因此,如果改变信号的频率更高,则可能导致出现问题(例如抖动/振动/噪声/...)。