分享

机械臂与Arduino演示(二)–16路PWM舵机驱动 | 奇果派工坊

 啊司com 2017-08-09

本示例中,我们将加入一个16路PWM舵机驱动板,利用Arduino通过PWM舵机驱动板来控制机械臂。

需要的舵机驱动板如图所示:



在meArm机械臂项目中,把舵机驱动板的16路分为4个区块,每个区块连接4个舵机(对应机械臂的四个舵机)。区块编号从0开始(0~3)。


示例一:用奇果派舵机驱动板控制机械臂

Arduino与PWMServo驱动板引脚接线方式:

Arduino PWMServo
GND GND
5V VCC & V+
A4 SDA
A5 SCL

在本演示中,我们把机械臂舵机接到第)一个区块,从左到右分别接底部舵机、右侧(臂膀)舵机、左侧(肘部)舵机、爪子舵机。

连接方式如下:

PWMServo序号 机械臂舵机
0 底部舵机
1 右侧(臂膀)舵机
2 左侧(肘部)舵机
3 爪子舵机

实例代码:

  1. #include "meArm_Adafruit.h"
  2. #include <Adafruit_PWMServoDriver.h>
  3. #include <Wire.h>
  4. meArm arm;
  5. void setup() {
  6. Serial.begin(9600);
  7. arm.begin(); //默认为第一区块,编号从0开始
  8. }
  9. void loop() {
  10. //鼓掌—爪子多次开合
  11. arm.openGripper();
  12. arm.closeGripper();
  13. arm.openGripper();
  14. arm.closeGripper();
  15. arm.openGripper();
  16. delay(500);
  17. //转到左上方抓点东西
  18. arm.gotoPoint(-80,100,140);
  19. arm.closeGripper();
  20. //放到右前方去
  21. arm.gotoPoint(70,200,10);
  22. arm.openGripper();
  23. //回到起始点
  24. arm.gotoPoint(0,100,50);
  25. delay(2000);
  26. }

 

演示二:通过游戏手柄控制机械臂

本示例需要有一对游戏摇杆,如图:


配件连接说明:

Arduino 摇杆1 摇杆2 PWMServo
GND GND GND GND
5V VCC VCC VCC & V+
A0 HORX    
A1 VERY    
A2   HORX  
A3   VERY  
A4     SDA
A5     SCL

舵机驱动与机械臂舵机连接说明:

PWMServo序号 机械臂舵机
0 底部舵机
1 右侧(臂膀)舵机
2 左侧(肘部)舵机
3 爪子舵机

实例程序:

  1. #include "meArm_Adafruit.h"
  2. #include "Adafruit_PWMServoDriver.h"
  3. #include <Wire.h>
  4. int xdirPin = 0;
  5. int ydirPin = 1;
  6. int zdirPin = 3;
  7. int gdirPin = 2;
  8. meArm arm;
  9. void setup() {
  10. arm.begin();
  11. }
  12. void loop() {
  13. float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
  14. float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
  15. float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
  16. float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
  17. if (abs(dx) < 1.5) dx = 0;
  18. if (abs(dy) < 1.5) dy = 0;
  19. if (abs(dz) < 1.5) dz = 0;
  20. if (!(dx == 0 && dy == 0 && dz == 0))
  21. arm.goDirectlyTo(arm.getX() + dx, arm.getY() + dy, arm.getZ() + dz);
  22. if (dg < -3.0)
  23. arm.closeGripper();
  24. else if (dg > 3.0)
  25. arm.openGripper();
  26. delay(50);
  27. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多