轻吟浅唱 发表于 2014-10-23 13:58:58

学习啦,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:17

额,,,你确定是有串口控制舵机?

轻吟浅唱 发表于 2014-10-23 21:05:27

努力微笑 发表于 2014-10-23 19:18 static/image/common/back.gif
额,,,你确定是有串口控制舵机?

是的,不过一次只能控制一个,有上位机更好

努力微笑 发表于 2014-10-23 21:45:30

噢,原来如此

枫叶 发表于 2015-7-31 19:57:56

目前正在做Matlab和arduino串口通信控制2路舵机,看了您的例程,很受启发,请问怎么让arduino接收负数呢?

mondaywoo 发表于 2015-8-11 23:00:06

初学者学习

吖---明 发表于 2015-8-16 21:02:08

我也需要这个,有谁有这样的上位机软件,共享一下啦!!

bastian 发表于 2016-4-6 21:16:35

为什么我的串口数据发送,85a一点反应没有,是串口数据没有发送成功吗?初学者,求解答,谢谢了

dqmlz 发表于 2016-4-10 10:21:12

初学者学习
页: [1]
查看完整版本: 学习啦,Arduino串口控制六路舵机实验