servo类函数的用法
attach |
连接舵机(自带库仅9/10脚有效) |
write |
角度控制 |
writeMicroseconds() |
更精准的角度控制(μm级) |
read() |
读上一次舵机转动角度 |
attached() |
检查舵机及是否连接控制板上 |
detach() |
断开舵机连接,使接口(9/10脚)可做PWM输出 |
servo类函数语法
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; //创建一个舵机控制对象
// Arduino自带的Servo函数库只可以同时控制两个模拟舵机;
//且最好使用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°运动
{ // 每次步进一度,实际会有些偏差属正常现象
myservo.write(pos); // 指定舵机转向的角度
delay(15); // 等待15ms让舵机到达指定位置
}
for(pos = 180; pos>=1; pos-=1) //从180°到0°运动
{
myservo.write(pos); // 指定舵机转向的角度
delay(15); // 等待15ms让舵机到达指定位置
}
//myservo.write(pos); //注释主函数的内容,取消注释此内容
//将pos换为具体的0到180间任意数,上电可直接让舵机转到该位置
}
- 用转动滑动电位器调整
#include <Servo.h>
Servo myservo;
//创建一个舵机控制对象
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)规划为(0,179)
myservo.write(val);
// 指定舵机转向的角度
delay(15);
// 等待15ms让舵机到达指定位置
}
因为在制作一个东西时需要用到舵机,在调整舵机零点的时候犯了糊涂,耽误了不少时间,调整好后索性做一次总结,供大家参考!
参考于[https://www./en/Reference/Servo]
及[(https://www./thread-1038-1-1.html)]
|