晒一晒自己DIY的桌面码垛机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 81571|回复: 134

晒一晒自己DIY的桌面码垛机

  [复制链接]
发表于 2015-8-28 12:02 | 显示全部楼层 |阅读模式
本帖最后由 夏夜繁星 于 2015-12-5 16:56 编辑


之前在网上看的其他人的机械臂都是一个输入信号对应控制一个舵机,所以无法实现夹持器的水平运动与垂直运动。我在arduino程序里加了运动方程,就可以让一个输入对应相关舵机,从而实现夹持器的水平运动与垂直运动,可以提高可控性。资料放在楼下,找一下就能找到啦~



P50828-101732.jpg
QQ截图20150828104912.jpg
QQ截图20150810150918.jpg
发表于 2015-9-3 18:10 | 显示全部楼层
个人感觉楼主这张图做的很好,如何把件排布的这么仔细呢?
110438cwh5u207unaph5hw.jpg
 楼主| 发表于 2015-8-28 12:04 | 显示全部楼层
下面是程序
#include <PS2X_lib.h>  //for v1.6
#include <Servo.h>
PS2X ps2x; // create PS2 Controller Class
Servo myservo;//创建伺服器对象
Servo myservo1;
Servo myservo2;
Servo myservo3;
int serover =3; //定义舵机信号线接口
int serover1=4;//小臂
int serover2=5;//大臂
int serover3=6;
int pos;
int pos1;
int pos2;
int pos3;
float x;//定义数学方程变量
float y;
float posa;
float A;
float B;
float C;
float D;
float pi=acos(-1.0);
int error = 0;
byte type = 0;
byte vibrate = 0;
byte a = 0;
void setup(){
Serial.begin(115200);
myservo.attach(serover);
myservo1.attach(serover1);
myservo2.attach(serover2);
myservo3.attach(serover3);
pos=72;
x=150;
y=0;
pos3=90;
servo_write();

error = ps2x.config_gamepad(13,11,12,10, false, false);   //setup pins and settings:  GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error

if(error == 0){

   Serial.println("");
}

  else if(error == 1)
   Serial.println("");

  else if(error == 2)
   Serial.println("");
   Serial.println("");

   //Serial.print(ps2x.Analog(1), HEX);

   type = ps2x.readType();
     switch(type) {
       case 0:
        Serial.println("0");
       break;
       case 1:
        Serial.println("1");
       break;
       case 2:
         Serial.println("2");
       break;
     }
}
void loop(){

if(error == 1) //skip loop if no controller found
  return;

if(type == 2){ //Guitar Hero Controller

   ps2x.read_gamepad();          //read controller

   return;
}

else { //DualShock Controller

    ps2x.read_gamepad(false, vibrate);         
      if(ps2x.Analog(PSS_LY)<127)              
    {
            y=y-2;         //L--UP
           servo_write();
     }

       if(ps2x.Analog(PSS_LY)>128)
    {
            y=y+2;         //L--DOWN
            servo_write();
    }
   if(ps2x.Analog(PSS_LX)<127)
    {
            x=x-2;         //L--LEFT
            servo_write();
    }
   if(ps2x.Analog(PSS_LX)>128)
    {
            x=x+2;       //L--RIGHT  
            servo_write();   
    }
   if((ps2x.Analog(PSS_LY)==127) && (ps2x.Analog(PSS_LX)==128))
    {
        //b_stop();
    }

   if(ps2x.Analog(PSS_RY)<127)
    {
         pos++;           //R--UP
         servo_write();
    }
      if(ps2x.Analog(PSS_RY)>128)
    {
          pos--;           //R--DOWN
          servo_write();
    }  
   if(ps2x.Analog(PSS_RX)<127)
    {
          pos3++;           //R--LEFT
          servo_write();
    }
   if(ps2x.Analog(PSS_RX)>128)
    {
          pos3--;          //R--RIGHT
          servo_write();
    }                                            
}
}
void servo_write()//写入舵机角度
{
   A=sqrt(x*x+y*y);//数学方程
   B=atan(y/x);
   C=acos(A/300);
   D=acos(1.0-A*A/45000);
   D=D/pi*180;
   posa=B+C;
   pos1=posa/pi*180;
   pos2=180-pos1-D;
    myservo.write(pos);
    myservo1.write(pos1);
    myservo2.write(pos2);
    myservo3.write(pos3);
    Serial.print("pos=");//显示pos的值
    Serial.println(pos);
    Serial.print("pos1=");//显示pos1的值
    Serial.println(pos1);
    Serial.print("pos2=");//显示pos2的值
    Serial.println(pos2);
    Serial.print("pos3=");//显示pos3的值
    Serial.println(pos3);
   delay(8);
}
发表于 2015-8-28 18:58 | 显示全部楼层
这个好啊!控制也好控制了!
 楼主| 发表于 2015-8-28 19:35 | 显示全部楼层
TFprime 发表于 2015-8-28 18:58
这个好啊!控制也好控制了!

嗯嗯
发表于 2015-8-29 15:18 | 显示全部楼层
很好的东西,我也想做一个,楼主是否可以把Solidworks文档发给我,学习学习,我的邮箱是jhw218@126.com,谢谢!
发表于 2015-8-29 18:27 | 显示全部楼层
我也想做一个,楼主是否可以把Solidworks文档发给我,我的邮箱是65958882@qq.com,谢谢!
发表于 2015-8-29 18:53 | 显示全部楼层
加油,运动精度很重要
 楼主| 发表于 2015-8-29 19:47 | 显示全部楼层
{:soso_e127:}不敢指望17块钱的舵机能有多高的运动精度。
感觉用步进电机加减速齿轮组运动精度会高些。没用过步进电机,大神多指点。{:soso_e113:}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:56 , Processed in 0.349343 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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