查看: 9053|回复: 13

[求助] 基于Arduino的八轴机械臂代码

[复制链接]
本帖最后由 YangLeo118 于 2016-5-10 14:37 编辑

求助!
新人玩了一段时间的Arduino 小车以后,现在对机械臂十分着迷。
今天收到以后看了下卖家给了一段测试代码(连注释都没的),懵逼中~~。
尝试写了一段程序,发现完全是Bullshit!!!
求大神赐予我力量~~~ 如果有懂的 麻烦告诉一下编程思想和如何实现。
我想的是,先写一个能写字的程序,比如我发送某个字母或者汉字,是否有可能让机械臂在纸上写出来。

头晕中~好像叙述得不是很清楚! 麻烦了!

hnyzcj  版主

发表于 2016-5-10 09:54:50

我也想知道,哈哈
回复

使用道具 举报

MoonShine  高级技匠

发表于 2016-5-10 11:54:12

正常,一句一句读就行,费点时间而已
回复

使用道具 举报

YangLeo118  学徒
 楼主|

发表于 2016-5-10 14:13:04

坐等大神解答
回复

使用道具 举报

YangLeo118  学徒
 楼主|

发表于 2016-5-10 14:32:05

更正一下 应该是8轴的
回复

使用道具 举报

冷大喵  见习技师

发表于 2016-5-10 17:33:27

我自己写了个鸡腿控制六轴的
回复

使用道具 举报

YangLeo118  学徒
 楼主|

发表于 2016-5-10 23:59:21

冷大喵 发表于 2016-5-10 17:33
我自己写了个鸡腿控制六轴的

能够给我发下 学习学习吗?
回复

使用道具 举报

冷大喵  见习技师

发表于 2016-5-11 13:37:00

YangLeo118 发表于 2016-5-10 23:59
能够给我发下 学习学习吗?



#include <Servo.h>
#include <math.h>
#include <stdlib.h>
#include "Wire.h"
#include "WiiChuck.h"

Servo servo1;  // create servo object to control a servo
Servo servo2;
Servo servo3;
Servo servo4;                // a maximum of eight servo objects can be created
Servo servo5;
Servo servo6;
WiiChuck wii = WiiChuck();
int pos1,pos2,pos3,pos4,pos5,pos6,x,y,z,c;    // variable to store the servo position

void setup()
{
    // attaches the servo on pin 9 to the servo object
servo1.attach(8);
  servo2.attach(9);
  servo3.attach(10);
  servo4.attach(11);
  servo5.attach(12);
  servo6.attach(13);
    pos1 = 60;
    pos2 = 50;
    pos3 = 100;
    pos4 =100;
    pos5 = 90;
    pos6 = 90;
servo1.write(pos1);
  servo2.write(pos2);
  servo3.write(pos3);
  servo4.write(pos4);
  servo5.write(pos5);
  servo6.write(pos6);
    wii.initWithPower();
  
}


void loop()
{

    if(true == wii.read() )
    {
      //读取手柄值
      x=wii.getJoyAxisX();
      y=wii.getJoyAxisY();
      c=wii.getButtonC();
      z=wii.getButtonZ();



}

   if(x==255  && y>120 && y<140  && c == 0 && z==1)//一号舵机
   { pos1 = pos1+10;
   servo1.write(pos1);
    delay (40);   
    if(pos1>160)
    {
      pos1=160;
      servo1.write(pos1);
    }
   
     
   }
    else if(x==255 && y>120 && y<140 && z==0 && c==1 )
    { pos1 = pos1-10;
     servo1.write(pos1);
    delay(40);
    if(pos1<20)
    {
      pos1=20;
      servo1.write(pos1);
    }
  }
  else if(x>220  && y==0  && c == 0 && z==1) //2号舵机
   {
   
     pos2 = pos2+10;
     servo2.write(pos2);
    delay (40);   
    if(pos2>160)
    {
      pos2=160;
      servo2.write(pos2);
    }

     
   }
    else if(x>220 && y==0  && z==0 && c==1 )
    {
   
      pos2 = pos2-10;
        servo2.write(pos2);
      delay(40);
      if(pos2<90)
      {
        pos2=90;
        servo2.write(pos2);
      }
    }
     else if(x>110  && x<140  && y==0  && c == 0 && z==1) //3号舵机
   {
   
     pos3 = pos3+10;
     servo3.write(pos3);
    delay (40);   
    if(pos3>160)
    {
      pos3=160;
       servo3.write(pos3);
    }

     
   }
    else if(x>110  && x<140  && y==0  && z==0 && c==1 )
    {
   
      pos3 = pos3-10;
        servo3.write(pos3);
      delay(40);
      if(pos3<20)
      {
        pos3=20;
        servo3.write(pos3);
      }
    }
      else if(x==0  && y==0  && c == 0 && z==1) //4号舵机
   {
   
     pos4 = pos4+10;
     servo4.write(pos4);
    delay (40);   
   
    if(pos4>160)
    {
      pos4=160;
      servo4.write(pos4);
    }
   
     
   }
    else if(x==0 && y==0  && z==0 && c==1 )
    {
   
      pos4 = pos4-10;
        servo4.write(pos4);
      delay(40);
      if(pos4<20)
      {
        pos4=20;
        servo4.write(pos4);
      }
    }
     else if(x==0  && y==128  && c == 0 && z==1) //5号舵机
   {
    servo5.write(pos5);
     pos5 = pos5+10;
  
    delay (40);   
   
    if(pos5>170)
    {
      pos5=160;
   
    }
   
     
   }
    else if(x==0 && y==128  && z==0 && c==1 )
    {
      servo5.write(pos5);
      pos5 = pos5-10;
     
      delay(40);
      if(pos5<20)
      {
        pos5=30;
      
      }
    }
     else if(x==0   && y>240  && c == 0 && z==1) //6号舵机
   {
     servo6.write(pos6);
     pos6 = pos6+10;
   
    delay (40);   
   
    if(pos6>120)
    {
      pos6=119;
     
    }  
   }
    else if(x==0 && y>240  && z==0 && c==1 )
    {
    servo6.write(pos6);
      pos6 = pos6-10;
        
      delay(40);
      if(pos6<45)
      {
        pos6=41;
      
      }
    }
}
回复

使用道具 举报

冷大喵  见习技师

发表于 2016-5-11 13:41:49

只做到了拿鸡腿控制,超级简单的语句,,
回复

使用道具 举报

dsweiliang  初级技神

发表于 2016-5-12 08:21:09

什么味的鸡腿?
回复

使用道具 举报

YangLeo118  学徒
 楼主|

发表于 2016-5-12 19:51:06

冷大喵 发表于 2016-5-11 13:37
#include  
#include
#include

非常感谢 我这边也有一个 通过串口输入 控制机械臂的代码
回复

使用道具 举报

冷大喵  见习技师

发表于 2016-5-14 16:06:17

YangLeo118 发表于 2016-5-12 19:51
非常感谢 我这边也有一个 通过串口输入 控制机械臂的代码

你发下串口控制的呗。我现在不太会用串口控制
回复

使用道具 举报

YangLeo118  学徒
 楼主|

发表于 2016-5-15 05:29:05

冷大喵 发表于 2016-5-14 16:06
你发下串口控制的呗。我现在不太会用串口控制

要等一下下 还没有 写完 ~目前只做到 控制Auto 和 Stop 没有写到 随意控制不同舵机的角度
回复

使用道具 举报

ccccc  学徒 来自手机

发表于 2019-8-8 20:48:04

YangLeo118 发表于 2016-5-15 05:29
要等一下下 还没有 写完 ~目前只做到 控制Auto 和 Stop 没有写到 随意控制不同舵机的角度 ...

请问写完了吗
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail