极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2002|回复: 0

如何驱动模拟舵机-Controller 1.0b软件的使用

[复制链接]
发表于 2023-4-3 10:17:04 | 显示全部楼层 |阅读模式
本帖最后由 机器谱 于 2023-4-3 10:17 编辑

1.支持平台
    win10、win7
    win10打开Controller 1.0.exe即可运行;win7需要先安装Controller1.0b资料包\NetFarmwork文件夹中的.net框架组件。

2.电子硬件
    我们用以下硬件为例来讲解Controller 1.0b软件的使用:

主控板
Basra主控板(兼容Arduino Uno)
扩展板
Bigfish2.1扩展板
SH-SR舵机扩展板

3.操作步骤
上位机:Controller 1.0
下位机编程环境:Arduino 1.8.19

① 使用 SH-SR舵机扩展板【https://www.robotway.com/h-col-142.html】 调试舵机时,将Controller1.0b资料包\Arduino\servo\servo.ino下载到主控板;
  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-03-17 https://www.robotway.com/

  6.   ------------------------------*/

  7. #include <Tlc5940.h>

  8. #include <tlc_servos.h>


  9. #define ANGLE_VALUE_MIN 0

  10. #define ANGLE_VALUE_MAX 180

  11. #define PWM_VALUE_MIN 500

  12. #define PWM_VALUE_MAX 2500


  13. int data_array[2] = {0,0};   //servo_pin: data_array[0], servo_value: data_array[1];

  14. String data = "";


  15. boolean dataComplete = false;


  16. void setup() {

  17.   Serial.begin(9600);

  18.   Tlc.init(0);

  19.   tlc_initServos();

  20.   delay(1000);

  21. }


  22. void loop() {



  23.   while(Serial.available())

  24.   {

  25.     int B_flag, P_flag, T_flag;

  26.     data = Serial.readStringUntil('\n');

  27.     data.trim();

  28.     for(int i=0;i<data.length();i++)

  29.     {

  30.       //Serial.println(data[i]);

  31.       switch(data[i])

  32.       {

  33.         case '#':

  34.           B_flag = i;  

  35.         break;

  36.         case 'P':

  37.         {

  38.           String pin = "";

  39.           P_flag = i;

  40.           for(int i=B_flag+1;i<P_flag;i++)

  41.           {

  42.             pin+=data[i];

  43.           }

  44.           data_array[0] = pin.toInt();

  45.         }

  46.         break;

  47.         case 'T':

  48.         {

  49.           String angle = "";

  50.           T_flag = i;

  51.           for(int i=P_flag+1;i<T_flag;i++)

  52.           {

  53.             angle += data[i];

  54.           }

  55.           data_array[1] = angle.toInt();

  56.         }

  57.         break;

  58.         default: break;

  59.       }     

  60.     }

  61.    

  62.     /*

  63.     Serial.println(B_flag);

  64.     Serial.println(P_flag);

  65.     Serial.println(T_flag);

  66.    

  67.     for(int i=0;i<2;i++)

  68.     {

  69.       Serial.println(data_array[i]);

  70.     }

  71.     */

  72.    

  73.     dataComplete = true;

  74.   }



  75.   if(dataComplete)

  76.   {

  77.     if(data_array[1] >= ANGLE_VALUE_MIN && data_array[1] <= ANGLE_VALUE_MAX)

  78.     {

  79.       tlc_setServo(data_array[0], data_array[1]);

  80.     }

  81.     else if(data_array[1] >= PWM_VALUE_MIN && data_array[1] <= PWM_VALUE_MAX)

  82.     {

  83.       data_array[1] = map(data_array[1], 500, 2500, 0, 180);

  84.       tlc_setServo(data_array[0], data_array[1]);

  85.     }

  86.     Tlc.update();

  87.     dataComplete = false;

  88.   }




  89. }
复制代码

使用 Bigfish扩展板【https://www.robotway.com/h-col-136.html】 调试舵机时,将Controller1.0b资料包\Arduino\servo_bigfish\servo_bigfish.ino下载到主控板。
  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-03-17 https://www.robotway.com/

  6.   ------------------------------*/

  7. /*

  8. * Bigfish扩展板舵机口; 4, 7, 11, 3, 8, 12, 14, 15, 16, 17, 18, 19

  9. * 使用软件调节舵机时请拖拽对应序号的控制块

  10. */

  11. #include <Servo.h>


  12. #define ANGLE_VALUE_MIN 0

  13. #define ANGLE_VALUE_MAX 180

  14. #define PWM_VALUE_MIN 500

  15. #define PWM_VALUE_MAX 2500


  16. #define SERVO_NUM 12


  17. Servo myServo[SERVO_NUM];


  18. int data_array[2] = {0,0};   //servo_pin: data_array[0], servo_value: data_array[1];

  19. int servo_port[SERVO_NUM] = {4, 7, 11, 3, 8, 12, 14, 15, 16, 17, 18, 19};

  20. int servo_value[SERVO_NUM] = {};


  21. String data = "";


  22. boolean dataComplete = false;


  23. void setup() {

  24.   Serial.begin(9600);



  25. }


  26. void loop() {



  27.   while(Serial.available())

  28.   {

  29.     int B_flag, P_flag, T_flag;

  30.     data = Serial.readStringUntil('\n');

  31.     data.trim();

  32.     for(int i=0;i<data.length();i++)

  33.     {

  34.       //Serial.println(data[i]);

  35.       switch(data[i])

  36.       {

  37.         case '#':

  38.           B_flag = i;  

  39.         break;

  40.         case 'P':

  41.         {

  42.           String pin = "";

  43.           P_flag = i;

  44.           for(int i=B_flag+1;i<P_flag;i++)

  45.           {

  46.             pin+=data[i];

  47.           }

  48.           data_array[0] = pin.toInt();

  49.         }

  50.         break;

  51.         case 'T':

  52.         {

  53.           String angle = "";

  54.           T_flag = i;

  55.           for(int i=P_flag+1;i<T_flag;i++)

  56.           {

  57.             angle += data[i];

  58.           }

  59.           data_array[1] = angle.toInt();

  60.           servo_value[pin2index(data_array[0])] = data_array[1];

  61.         }

  62.         break;

  63.         default: break;

  64.       }     

  65.     }

  66.    

  67.     /*

  68.     Serial.println(B_flag);

  69.     Serial.println(P_flag);

  70.     Serial.println(T_flag);

  71.    

  72.     for(int i=0;i<2;i++)

  73.     {

  74.       Serial.println(data_array[i]);

  75.     }

  76.     */

  77.    

  78.     dataComplete = true;

  79.   }



  80.   if(dataComplete)

  81.   {

  82.     for(int i=0;i<SERVO_NUM;i++)

  83.     {

  84.       ServoGo(i, servo_value[i]);

  85.       /*********************************串口查看输出***********************************/

  86. //      Serial.print(servo_value[i]);

  87. //      Serial.print(" ");

  88.     }

  89. //    Serial.println();

  90.       /*********************************++++++++++++***********************************/


  91.     dataComplete = false;

  92.   }




  93. }


  94. void ServoStart(int which){

  95.   if(!myServo[which].attached() && (servo_value[which] != 0))myServo[which].attach(servo_port[which]);

  96.       else return;

  97.   pinMode(servo_port[which], OUTPUT);

  98. }


  99. void ServoStop(int which){

  100.   myServo[which].detach();

  101.   digitalWrite(servo_port[which],LOW);

  102. }


  103. void ServoGo(int which , int where){

  104.   ServoStart(which);

  105.   if(where >= ANGLE_VALUE_MIN && where <= ANGLE_VALUE_MAX)

  106.   {

  107.     myServo[which].write(where);

  108.   }

  109.   else if(where >= PWM_VALUE_MIN && where <= PWM_VALUE_MAX)

  110.   {

  111.     myServo[which].writeMicroseconds(where);

  112.   }

  113. }


  114. int pin2index(int _pin){

  115.   int index;

  116.   switch(_pin)

  117.   {

  118.     case 4: index = 0; break;

  119.     case 7: index = 1; break;

  120.     case 11: index = 2; break;

  121.     case 3: index = 3; break;

  122.     case 8: index = 4; break;

  123.     case 12: index = 5; break;

  124.     case 14: index = 6; break;

  125.     case 15: index = 7; break;

  126.     case 16: index = 8; break;

  127.     case 17: index = 9; break;

  128.     case 18: index = 10; break;

  129.     case 19: index = 11; break;

  130.   }

  131.   return index;

  132. }
复制代码

下载完成后,保持主控板和电脑的USB连接,并打开主控板电源,以便利用上位机进行调试。

② 双击打开Controller 1.0.exe:


③ 界面左上角选择:
设置-面板设置,弹出需要显示的调试块,可通过勾选隐藏不需要调试的舵机块:联机-选择主控板对应端口号以及波特率。


④ 拖动进度条,可以观察相应的舵机角度转动。写好对应的舵机调试角度,勾选左下角添加-转化,获得舵机调试的数组:


⑤ 该数组可直接复制到相应的arduino软件的程序中进行使用。

使用Controller 1.0b软件调试舵机角度的实验案例可参考 2自由度六足-原地舞蹈【https://www.robotway.com/h-col-197.html】

4.资料下载
资料内容:Controller1.0b资料包
资料下载地址:https://www.robotway.com/h-col-129.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 15:55 , Processed in 0.044990 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表