專注電子技術學習與研究
當前位置:單片機教程網(wǎng) >> Arduino >> 瀏覽文章

arduino控制舵機程序

作者:佚名   來源:哭笑不得空間   點擊數(shù):  更新時間:2014年08月12日   【字體:

以前沒有接觸過硬件,因為把弄APM2.5不得不去接觸arduino板。Arduino是塊極易上手的控板,不像單片機,你要花費大量的時間去學習預備知識,它只要你稍微懂點C語言既能上手。對于我這種業(yè)余愛好者,不二之選。手頭有幾個舵機,首次接觸arduino就是用它來操作舵機。Arduino有個底層庫(Servo類),包含驅(qū)動舵機的基本功能:

attach()//連接舵機
write()//角度控制
writeMicroseconds()//參數(shù)為pwm值,1000:逆時針旋轉180度,1500:到達中點,2000:順時針旋轉180度
read()//讀上一次舵機轉動角度
attached()//
detach()//斷開舵機連接
實例:
器材:arduino板、舵機、杜邦線若干 
程序可以在IDE>File>Examples>Servo>Sweep中找到
這里介紹不調(diào)用Servo庫,寫的Servo.write()函數(shù),有些問題,串口輸入的值與伺服轉動的角度不相同。郁悶中!!
int value;
int pulsewidth;
int pin=9;
void servowrite(int pin,int value)
{
  digitalWrite(pin,HIGH);
  value=map(value,0,180,700,2300);//舵機的PWM值在700~2300間,這是粗略的PWM數(shù)值轉換
  digitalWrite(pin,LOW);
}
void setup()
{
 Serial.begin(9600);
 pinMode(pin,OUTPUT);
}
void loop()
{
  if(Serial.available()>0)
  {
    int val=Serial.read();
    value=val-'0';//轉換為數(shù)字
    value=map(value,0,9,0,180);
    Serial.print("moving servo to");
    Serial.print(value);
    servowrite(pin,value);
   }
    
}
關閉窗口

相關文章