簡體   English   中英

如何用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
  }

該代碼試圖使伺服系統從0180度相對緩慢地移動。 10 ms乘以181步等於1.81 seconds

如果不是全部,大多數伺服器的速度要比僅從0直線移動到180的速度快得多。

該代碼的一個問題是您不知道伺服器的初始位置是什么。 例如,如果初始位置為180,則它將快速跳至0,然后慢慢移回180。

還要注意,大多數伺服器每20毫秒左右就有一個信號被控制,因此改變信號的頻率比改變信號的頻率高可能會導致問題(例如抖動/振動/噪聲/ ...)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM