学习啦,Arduino串口控制六路舵机实验
本帖最后由 轻吟浅唱 于 2014-10-23 14:00 编辑因为之前买了一个六路机械臂,但木有买舵机控制器,而且自己又打算用arduino uno来作舵机的控制,所以对舵机的控制学习了不少,下面是一段串口控制六路舵机的实验代码,串口每输入一段字符指令相应的舵机就会有对应角度偏转,,,,,。
#include <Servo.h> //这里是头文件,可以在“sketch”-“Import Library”-“servo”调用出来
Servo myservo_1; //定义一号舵机名{Servo [声明舵机的名字,可以随意,后面需要调用]}
Servo myservo_2; //定义二号舵机名
Servo myservo_3; //定义三号舵机名
Servo myservo_4;
Servo myservo_5;
Servo myservo_6;
void setup() //这里前面的文章提过了,指的是函数在程序开始时使用,可以初始化变量、接口模式、启用库等
{
myservo_1.attach(1); //定义一号舵机接口,连接到Arduino板子上的pin1
myservo_2.attach(2); //定义二号舵机接口,连接到Arduino板子上的pin2
myservo_3.attach(3); //定义号三号舵机接口,连接到Arduino板子上的pin3
myservo_4.attach(4);
myservo_5.attach(5);
myservo_6.attach(6);
Serial.begin(19200); //设置波特率为19200,波特率
Serial.print("Ready"); //板子运行的时候返回“Ready”提示
}
void loop()
{
static int v=0;
if (Serial.available()) //判断语句
{
char ch = Serial.read(); //读取串口数据
switch(ch)
{
case '0'...'9':
v = v*10 + ch - '0'; //字符转换成十进制
break;
case 'a': //如果数据后带a,则表示是一号舵机的数据,比如串口发送85a
myservo_1.write(v); //用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°,“V”得到所输入的值而改变角度,比如85a为85度角
v = 0;
break;
case 'b': //如果数据后带b,则表示是二号舵机的数据,比如串口发送85a
myservo_2.write(v); //用于设定舵机旋转角度的语句,可设定的角度范围是0°到180°,“V”得到所输入的值而改变角度,比如90b为90度角
v = 0;
break;
case 'c':
myservo_3.write(v);
v = 0;
break;
case 'd':
myservo_4.write(v);
v = 0;
break;
case 'e':
myservo_5.write(v);
v = 0;
break;
case 'f':
myservo_6.write(v);
v = 0;
break;
}
}
}
额,,,你确定是有串口控制舵机? 努力微笑 发表于 2014-10-23 19:18 static/image/common/back.gif
额,,,你确定是有串口控制舵机?
是的,不过一次只能控制一个,有上位机更好 噢,原来如此 目前正在做Matlab和arduino串口通信控制2路舵机,看了您的例程,很受启发,请问怎么让arduino接收负数呢? 初学者学习 我也需要这个,有谁有这样的上位机软件,共享一下啦!! 为什么我的串口数据发送,85a一点反应没有,是串口数据没有发送成功吗?初学者,求解答,谢谢了 初学者学习
页:
[1]