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

}
经验分享 程序员 微信小程序 职场和发展