Arduino系列教程-017 舵机控制

本教程来至yingcloud.com网站

舵机是一种位置伺服的驱动器,它接收一定的控制信号,输出一定的角度,适用于那些需要角度不断变化并可以保持的控制系统。本实验用一块Arduino来驱动舵机。

元器件

舵机、面包线、Arduino板

  


实验接线图

舵机由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。从图上可以看出舵机有三根接线 ,棕色为接地线,红色为电源正极线,橙色为信号线,接线就这样了。

程序代码

int servopin=9;//定义数字接口9 连接伺服舵机信号线
int myangle;//定义角度变量
int pulsewidth;//定义脉宽变量
int val;
void servopulse(int servopin,int myangle)//定义一个脉冲函数
{
pulsewidth=(myangle*11)+500;//将角度转化为500-2480 的脉宽值
digitalWrite(servopin,HIGH);//将舵机接口电平至高
delayMicroseconds(pulsewidth);//延时脉宽值的微秒数
digitalWrite(servopin,LOW);//将舵机接口电平至低
delay(20-pulsewidth/1000);
}
void setup()
{
pinMode(servopin,OUTPUT);//设定舵机接口为输出接口
Serial.begin(9600);//连接到串行端口,波特率为9600
Serial.println("servo=o_seral_simple ready" ) ;
}
void loop()//将0 到9 的数转化为0 到180 角度,并让LED 闪烁相应数的次数
{
val=Serial.read();//读取串行端口的值
if(val>'0'&&val<='9')
{
val=val-'0';//将特征量转化为数值变量
val=val*(180/9);//将数字转化为角度
Serial.print("moving servo to ");
Serial.print(val,DEC);
Serial.println();
for(int i=0;i<=50;i++) //给予舵机足够的时间让它转到指定角度
{
servopulse(servopin,val);//引用脉冲函数
}
}
}

让舵机转动到用户输入数字所对应的角度数的位置,并将角度打印显示到屏幕上。如图:

总结与思考

实验比较简单,从效果来看舵机需要人为的输入一个角度才会转动,将变化的脉冲值转化为角度值并随着转动,这就是本次实验。在连线时要注意接线错误,不要将线接反。

你可能感兴趣的:(传感器,arduino,创业公司,可穿戴设备,开源硬件)