【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); } }