以前没有接触过硬件,因为把弄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); } }