以前沒有接觸過硬件,因為把弄APM2.5不得不去接觸arduino板。Arduino是塊極易上手的控板,不像單片機,你要花費大量的時間去學習預備知識,它只要你稍微懂點C語言既能上手。對於我這種業余愛好者,不二之選。手頭有幾個舵機,首次接觸arduino就是用它來操作舵機。Arduino有個底層庫(Servo類),包含驅動舵機的基本功能:
attach()//連接舵機 write()//角度控制 writeMicroseconds()//參數為pwm值,1000:逆時針旋轉180度,1500:到達中點,2000:順時針旋轉180度 read()//讀上一次舵機轉動角度 attached()// detach()//斷開舵機連接
實例:
器材:arduino板、舵機、杜邦線若干
程序可以在IDE>File>Examples>Servo>Sweep中找到
這里介紹不調用Servo庫,寫的Servo.write()函數,有些問題,串口輸入的值與伺服轉動的角度不相同。郁悶中!!!
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數值轉換 digitalWrite(pin,LOW); } void setup() { Serial.begin(9600); pinMode(pin,OUTPUT); } void loop() { if(Serial.available()>0) { int val=Serial.read(); value=val-'0';//轉換為數字 value=map(value,0,9,0,180); Serial.print("moving servo to"); Serial.print(value); servowrite(pin,value); } }