【Arduino学习笔记】用Arduino读取普通舵机角度
我们知道,舵机我们是给一定的脉冲去控制它运转到不同的角度,那么有没有办法拿来一个舵机,没有上电过,就能够读取当前的角度?
软件上我们看Arduino关于舵机的函数就是这些,有一个read()函数好像可以。但是它读取的是最后一条write()命令中的值,这是上电过的了。
官网关于read的解释:
read()用法:
#include <Servo.h>
#define PIN_SERVO 9
int i=0;
Servo myservo;
void setup()
{
myservo.attach(PIN_SERVO);
Serial.begin(9600);
}
void loop()
{
myservo.write(60);
i= myservo.read();
Serial.println(i);
delay(5000);
myservo.write(i+10);
i= myservo.read();
Serial.println(i);
delay(5000);
}
void reset()
{
i= read();
}
当控制舵机复位的时候,一上电舵机都是pa一下子复位,容易造成一些结构损坏。所以就需要读取当前角度,慢动作复位,以下程序想实现这个功能,但是普通舵机无法读取当前的角度,所以暂时无法实现。突破思路可以在结构上吧。
#include <Servo.h>
#define PIN_SERVO 9
int angle=0;
int read_angle=0;
Servo myservo;
void reset();
void setup()
{
myservo.attach(PIN_SERVO);
Serial.begin(9600);
reset();
}
void loop()
{
for(angle=0;angle<160;angle++)
{
myservo.write(angle);
delay(30);
}
for(angle=160;angle>0;angle--)
{
myservo.write(angle);
delay(30);
}
}
void reset()
{
read_angle = myservo.read();
for(read_angle;read_angle>0;read_angle--)
{
myservo.write(read_angle);
Serial.println(read_angle);
delay(30);
}
}
