|
servo類函數(shù)的用法
| attach |
連接舵機(自帶庫僅9/10腳有效) |
| write |
角度控制 |
| writeMicroseconds() |
更精準的角度控制(μm級) |
| read() |
讀上一次舵機轉動角度 |
| attached() |
檢查舵機及是否連接控制板上 |
| detach() |
斷開舵機連接,使接口(9/10腳)可做PWM輸出 |
servo類函數(shù)語法
| attach |
servo.attach(pin)/ servo.attach(pin, min, max) |
| – |
servo.write(angle) |
| – |
servo.writeMicroseconds(μm) |
| – |
servo.read() |
| – |
servo.attached() |
| – |
servo.detach() |
- 讓舵機從0°轉到180°再到0°
#include <Servo.h>
Servo myservo; //創(chuàng)建一個舵機控制對象
// Arduino自帶的Servo函數(shù)庫只可以同時控制兩個模擬舵機;
//且最好使用D9 D10腳;
//若需要控制多個舵機則需要用pwm功能;
//使用Servo類最多可以控制8個舵機
int pos = 0; // 該變量(pos)用于存儲舵機角度位置
/*~~~~~~~~~~~~~~~~~~~~~~~~~~樸實的分割線~~~~~~~~~~~~~~~~~~~~~~~~~~ */
void setup()
{
myservo.attach(9); // 該舵機由arduino第九腳控制
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~樸實的分割線 ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
void loop()
{
for(pos = 0; pos < 180; pos += 1) // 從0°到180°運動
{ // 每次步進一度,實際會有些偏差屬正常現(xiàn)象
myservo.write(pos); // 指定舵機轉向的角度
delay(15); // 等待15ms讓舵機到達指定位置
}
for(pos = 180; pos>=1; pos-=1) //從180°到0°運動
{
myservo.write(pos); // 指定舵機轉向的角度
delay(15); // 等待15ms讓舵機到達指定位置
}
//myservo.write(pos); //注釋主函數(shù)的內容,取消注釋此內容
//將pos換為具體的0到180間任意數(shù),上電可直接讓舵機轉到該位置
}
- 用轉動滑動電位器調整
#include <Servo.h>
Servo myservo;
//創(chuàng)建一個舵機控制對象
int potpin = 0; //該變量用于存儲用電位器讀出的模擬值
int val;
// 該變量用與存儲舵機角度位置
void setup()
{
myservo.attach(9);
// 該舵機由arduino第九腳控制
}
void loop()
{
val = analogRead(potpin); //讀取電位器控制的模擬值 (范圍在0-1023)
val = map(val, 0, 1023, 0, 179); //將電位器讀取的(0,1023)規(guī)劃為(0,179)
myservo.write(val);
// 指定舵機轉向的角度
delay(15);
// 等待15ms讓舵機到達指定位置
}
因為在制作一個東西時需要用到舵機,在調整舵機零點的時候犯了糊涂,耽誤了不少時間,調整好后索性做一次總結,供大家參考!
參考于[https://www./en/Reference/Servo]
及[(https://www./thread-1038-1-1.html)]
|