机械臂与Arduino演示(二)–16路PWM舵机驱动

本示例中,我们将加入一个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 爪子舵机

实例代码:

#include "meArm_Adafruit.h"

#include <Adafruit_PWMServoDriver.h>

#include <Wire.h>

meArm arm;

void setup() {

  Serial.begin(9600);

  arm.begin();  //默认为第一区块,编号从0开始
 
}

void loop() {

  //鼓掌—爪子多次开合

  arm.openGripper();

  arm.closeGripper();

  arm.openGripper();
  
  arm.closeGripper();

  arm.openGripper();

  delay(500);

  //转到左上方抓点东西

  arm.gotoPoint(-80,100,140);
  
  arm.closeGripper();
 
  //放到右前方去

  arm.gotoPoint(70,200,10);

  arm.openGripper();

  //回到起始点

  arm.gotoPoint(0,100,50);

  delay(2000);

}

 

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

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


配件连接说明:

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 爪子舵机

实例程序:

#include "meArm_Adafruit.h"

#include "Adafruit_PWMServoDriver.h"

#include <Wire.h>

int xdirPin = 0;

int ydirPin = 1;

int zdirPin = 3;

int gdirPin = 2;

meArm arm;

void setup() {

  arm.begin();

}

void loop() {

  float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);

  float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);

  float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);

  float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);

  if (abs(dx) < 1.5) dx = 0;

  if (abs(dy) < 1.5) dy = 0;

  if (abs(dz) < 1.5) dz = 0;

  if (!(dx == 0 && dy == 0 && dz == 0))

  arm.goDirectlyTo(arm.getX() + dx, arm.getY() + dy, arm.getZ() + dz);

  if (dg < -3.0)

    arm.closeGripper();

  else if (dg > 3.0)

    arm.openGripper();

  delay(50);

}

示例代码下载:点击下载