servo類函數(shù)的用法
attach |
連接舵機(自帶庫僅9/10腳有效) |
write |
角度控制 |
writeMicroseconds() |
更精準的角度控制(μm級) |
read() |
讀上一次舵機轉(zhuǎn)動角度 |
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°轉(zhuǎn)到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°運動
{ // 每次步進一度,實際會有些偏差屬正?,F(xiàn)象
myservo.write(pos); // 指定舵機轉(zhuǎn)向的角度
delay(15); // 等待15ms讓舵機到達指定位置
}
for(pos = 180; pos>=1; pos-=1) //從180°到0°運動
{
myservo.write(pos); // 指定舵機轉(zhuǎn)向的角度
delay(15); // 等待15ms讓舵機到達指定位置
}
//myservo.write(pos); //注釋主函數(shù)的內(nèi)容,取消注釋此內(nèi)容
//將pos換為具體的0到180間任意數(shù),上電可直接讓舵機轉(zhuǎn)到該位置
}
- 用轉(zhuǎn)動滑動電位器調(diào)整
#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);
// 指定舵機轉(zhuǎn)向的角度
delay(15);
// 等待15ms讓舵機到達指定位置
}
因為在制作一個東西時需要用到舵機,在調(diào)整舵機零點的時候犯了糊涂,耽誤了不少時間,調(diào)整好后索性做一次總結(jié),供大家參考!
參考于[https://www./en/Reference/Servo]
及[(https://www./thread-1038-1-1.html)]
|