基于180°金属带模拟值反馈舵机的简易机械臂设计
今天给大家带来一个 180° 金属带模拟值反馈舵机的应用,就是利用该舵机设计一个简易机械臂,该机械臂具有学习功能,当我们给它设定一个动作,设计完成后,它能根据我设计的动作自动进行学习,复刻我设定的动作。当当,下面是我们使用到的角色~
主角!! SER0047--->>>180° 金属带模拟值反馈舵机还有其他的小伙伴DFR0216-2--->>>DFRduino UNO R3DFR0117--->>>Gravity: I2C EEPROM数据存储模块下面我们康康它们长什么样子吧
开箱主角介绍:
软件介绍:接下来我们要进行安装环境得安装,这里我简单给大家介绍一下我们开发使用的是 DFRduino UNO R3,首先我们要先下载 Arduino 编译环境下载地址:https://www.arduino.cc/en/Main/Software下载完成后进行驱动安装,找到下载文件
驱动安装完成后我们就可以愉快的在 Arduino IDE 上进行开发啦!写的不好,不要见怪,小伙伴们也可以参考下面链接详细里了解 arduino 的使用教程。
https://wiki.dfrobot.com.cn/Arduino%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B
https://wiki.dfrobot.com.cn/Arduino%E9%A9%B1%E5%8A%A8%E7%9A%84%E5%AE%89%E8%A3%85
接下来我们简单直接一点,直接上程序。#include <Servo.h>
#include <Wire.h> //I2C library
#define DJ1 0
#define DJ2 0x3000
#define DJ3 0x6000
Servo myservo1;
Servo myservo2;
Servo myservo3;
int h1,h2,h3,l1,l2,l3;
//uint8_t Data = {0};
void setup() {
Wire.begin(); // initialise the connection
Serial.begin(9600);
pinMode(3, INPUT);
pinMode(13, OUTPUT);
myservo1.attach(9);
myservo2.attach(8);
myservo3.attach(7);
Init();
while (Botton(3) == 0);
}
void loop() {
int val = readAngle();
writingAngle( val);
}
bool Botton(int inPin)
{
bool ret = 0;
if (digitalRead(inPin)) {
delay(100);
if (digitalRead(inPin)) {
ret = 1;
digitalWrite(13, HIGH);
while (digitalRead(inPin));
digitalWrite(13, LOW);
delay(100);
}
}
return ret;
}
int readAngle(void)
{
int Length = 0;
byte dat;
myservo1.detach();
myservo2.detach();
myservo3.detach();
while (Botton(3) == 0) {
dat = map(analogRead(0), l1, h1, 0, 180);
i2c_eeprom_write_byte( 0x57, Length, dat );
dat = map(analogRead(1), l2, h2, 0, 180);
i2c_eeprom_write_byte( 0x57, DJ2 + Length, dat );
dat = map(analogRead(2), l3, h3, 0, 180);
i2c_eeprom_write_byte( 0x57, DJ3 + Length, dat );
Length++;
if (Length >= 1023) {
break;
}
}
return Length;
}
void writingAngle( int Length)
{
int i = 0;
int flag = 1;
myservo1.attach(9);
myservo2.attach(8);
myservo3.attach(7);
while (flag) {
for (int i = 0; i < Length; i++) {
myservo1.write(i2c_eeprom_read_byte(0x57, i + DJ1));
myservo2.write(i2c_eeprom_read_byte(0x57, i + DJ2));
myservo3.write(i2c_eeprom_read_byte(0x57, i + DJ3));
if (Botton(3)) {
flag = 0;
break;
}
delay(18);
}
}
}
void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data )
{
int rdata = data;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.write(rdata);
Wire.endTransmission();
delay(6);
}
byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress )
{
byte rdata = 0xFF;
Wire.beginTransmission(deviceaddress);
Wire.write((int)(eeaddress >> 8)); // MSB
Wire.write((int)(eeaddress & 0xFF)); // LSB
Wire.endTransmission();
Wire.requestFrom(deviceaddress, 1);
if (Wire.available()) rdata = Wire.read();
return rdata;
}
void Init()
{
myservo1.write(0);
myservo2.write(0);
myservo3.write(0);
delay(1000);
l1= analogRead(0);
l2= analogRead(1);
l3= analogRead(2);
myservo1.write(180);
myservo2.write(180);
myservo3.write(180);
delay(1000);
h1= analogRead(0);
h2= analogRead(1);
h3= analogRead(2);
myservo1.write(90);
myservo2.write(90);
myservo3.write(90);
delay(1000);
}我们按下图一端连接开发板,另一端连接到电脑USB口
代码写好后,我们编译程序通过发现没有问题后,点击上传程序。好了程序编译上传成功了,接下来我们先测试效果,看看能达到我们的预期效果没。
测试:完成后我们发现无法同时驱动三个舵机,我们需要在 SERVO_PWR 接入一个 5V 电源,保证能同时驱动 3 个舵机。电源接入完成后,我们进行测试,测试结果如下。https://v.youku.com/v_show/id_XNTEzMTAyNzMwNA==.html我们可以看到,舵机可以进行动作的学习了。接下来我们就可以安装简易的机械臂了。
安装步骤:一切准备就绪后,接下来我们开始安装这个简易机械臂下面是机械臂材料一览图,这是我们机械臂要用的东西首先是底座,我们找到底座,通过卡槽将舵机装入里面,这样,我们的机械臂底座的安装就完成啦。接着我们安装两个臂,我们通过卡槽,将舵机固定好,到此,我们的简易机械臂就初据模型啦,我们就只差一个夹子啦。我们通过卡槽安装好即可
最后一步我们安装我们的夹子(夹子做的有点 low,大家见谅),夹子我们使用了一根橡皮筋和两个活动的夹子端,通过舵机旋转带动橡皮筋来实现夹取和放下。至此,我们的简易机械臂就安装完成啦,下面是简易舵机成品图。
布线和接线:接下来我们把三个舵机分别连接到开发板得 9,8,7 号引脚,模拟量接口分别接入模拟口 0,1,2,这里建议 9 号引脚舵机连接0号模拟口,8 号引脚舵机连接1号模拟口,7 号引脚舵机连接 2 号模拟口。安装完成后,我们需要把它的连接线用胶布缠一下,避免看上去很乱。这样,我们的完整简易机械臂就安装设计完成了,下面我们看看它的实际效果。相信已经迫不及待想要看我们的实际效果了吧。话不多说,我们直接看实际效果吧!
实际效果:应用实物如下,我们可以看到机械臂可以自动学习我们设置的动作https://v.youku.com/v_show/id_XNTEzMTAyODMwMA==.html
https://v.youku.com/v_show/id_XNTEzMTAyODc5Mg==.html
这样一个简单的机械臂就设计完成了,大家可以利用带反馈值做一些其他有趣的应用。这样一个反馈舵机,能做很多有趣的应用,喜欢的朋友可以参考链接购买玩起来哟!感谢大家的阅读,希望能对您有帮助,下面再次附上我们主角的链接。180°金属带模拟值反馈舵机
正想准备搭建一个简易机械臂,谢谢
页:
[1]