![](/img/trans.png)
[英]How to control a servo motor using servo library in C++ on Arduino?
[英]how to control servo motor with arduino
我在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
到180
度相對緩慢地移動。 10 ms
乘以181
步等於1.81 seconds
。
如果不是全部,大多數伺服器的速度要比僅從0直線移動到180的速度快得多。
該代碼的一個問題是您不知道伺服器的初始位置是什么。 例如,如果初始位置為180,則它將快速跳至0,然后慢慢移回180。
還要注意,大多數伺服器每20毫秒左右就有一個信號被控制,因此改變信號的頻率比改變信號的頻率高可能會導致問題(例如抖動/振動/噪聲/ ...)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.