/*
  write by qingtai jiangleftleg.write(95); leftfoot.write(100);     rightleg.write(80);   rightfoot.write(64);     delay(s); //状态1初始角度#define aa  88  //舵机初始角度  左上 舵机#define bb  89 // 左下 舵机#define cc  88 //右上 舵机#define dd  88  // 右下 舵机调角度#define aa  88  //舵机初始角度  左上 舵机#define bb  93 // 左下 舵机#define cc  88 //右上 舵机#define dd  88  // 右下 舵机直//1斜桶前进修改量       // 稍微偏左  -1直线#define ql  26    //   zhingxing()#define qr  26#define qj  -2   //*/
#include <Servo.h>
#define bushu 50  //走半圆的步数
#define times 2   //斜着过桶转的 次数#define star 5    //开始 和 终点 走的次数
#define tt 1      //抬脚的 增加量  总#define guotong 7   //过桶后走的步数
#define zhengliang 0 //第二次过桶的增加量
#define tong2 0  //第二次过桶转弯的增量#define aa  88  //舵机初始角度  左上 舵机
#define bb  93 // 左下 舵机
#define cc  88 //右上 舵机
#define dd  88  // 右下 舵机#define ss  50    //延迟时间//1斜桶前进修改量       // 稍微偏左  -1直线
#define ql  26    //   zhingxing()
#define qr  26
#define qj  0   //    //2斜桶前进修改量       // 稍微偏右
#define qql  26    //   zhingxingy()
#define qqr  26
#define qqj  -2    // //前进 稍微稍微的 偏向左   改了对调
#define qszl  26    //    zszhixing();   l 30 y 28
#define qszr  26
#define qszj  0    //    //前进 稍微稍微的 偏向右
#define qsyl  26    //  yszhixing()
#define qsyr  26
#define qsyj  -3   //   //=======================================================
//小左转
#define xzl  38
#define xzr  22
#define xzj  2//原地左转修改量
#define zl  38    // 左边 迈步的数值
#define zr  0       // 右边 迈步的数值
#define zj  0       //    j的值越大往左转的厉害// 前进时的左转#define qzl  42
#define qzr  5
#define qzj  0//========================================================
//小右转
#define xyl  22
#define xyr  36
#define xyj  -2//原地右转修改量  同上
#define yl  0
#define yr  38
#define yj  0//前进时的右转
#define qyl  5
#define qyr  42
#define qyj  0
//=============================================================
//定义各端口
#define lleg  6    //舵机 端口
#define lfoot  5
#define rleg  10
#define rfoot  11//光电管 端口    // 左侧口
#define zg1  2  //光电管 端口
#define zg2  3  //左侧 光电管
#define zg3  12  //左侧横向 光电管#define yg1  A2 //右侧 光电管
#define yg2  A3
#define yg3  A1 //右侧横向光电
#define zhong1 4  //中间光电管Servo   leftleg;//定义舵机
Servo   leftfoot;
Servo   rightleg;
Servo   rightfoot;
int  y1, y2, y3, z1, z2, z3, zhong;
int a, b, c, d, j;
int s;
float l, r;
float count; //记录步数
int count1;//过桶延迟
int count2; //过通后的 判断int panduan1();   //右侧寻迹函数
int panduan2();   //左侧寻迹void zhixingy();  //过桶的直行
void zhixing();   //直行
void zszhixing();  // 向左稍微直行的 函数
void yszhixing();  // 向右稍微直行
void xzuozhuan();  // 比上边的稍微大点
void xyouzhuan();  //小右转
void zuozhuan();   //原地左转
void qzuozhuan(); //前进的左转 5
void youzhuan();  //原地右转
void qyouzhuan(); //前进的右转 5
void ok();void gzhixing();   //修改步态 直行
void gzzhixing();  //
void gxzuozhuan();
void gxyouzhuan();
void gzuozhuan();
void gyouzhuan();
void gongneng(int a, int b, int c, int d, int s, float l, float r, int j); //正常步态
void gongneng2(int a, int b, int c, int d, int s, float l, float r, int j); // 修改步态void setup()
{pinMode(zg1, INPUT);pinMode(zg2, INPUT);pinMode(zg3, INPUT);pinMode(yg1, INPUT);pinMode(yg2, INPUT);pinMode(yg3, INPUT);pinMode(zhong1, INPUT);leftleg.attach (lleg);leftfoot.attach (lfoot);rightleg.attach (rleg);rightfoot.attach (rfoot);//连接6号端口leftleg.write (aa);//初始化角度leftfoot.write (bb);rightleg.write (cc);rightfoot.write (dd);count = 0;count1 = 0;delay(1500);
}
/*以上内容为初始化*/
// 1是黑线   0是白线
int panduan1()  //---------------------------------------右侧循迹
{y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if ((y1 == 0) && (y2 == 0)){xyouzhuan();    //中间力度 的右转}if ((y2 == 0) && (y1 == 1)){zszhixing();}if (((y2 == 1) && (y1 == 1)) || (y2 == 1) || ((y2 == 1) && (y1 == 0)) || (zhong == 1)){qzuozhuan();}if (z3 == 0){while (1){y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if ((y1 == 0) && (y2 == 0)){xyouzhuan();    //中间力度 的右转}if ((y2 == 0) && (y1 == 1)){zszhixing();}if (((y2 == 1) && (y1 == 1)) || (y2 == 1) || ((y2 == 1) && (y1 == 0))){qzuozhuan();}if (z3 == 1){while (1){y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if ((y1 == 0) && (y2 == 0)){xyouzhuan();    //中间力度 的右转}if ((y2 == 0) && (y1 == 1)){zszhixing();}if (((y2 == 1) && (y1 == 1)) || (y2 == 1) || ((y2 == 1) && (y1 == 0))){qzuozhuan();}count1++;if (count1 > guotong){break;}}break;}}return 0;}return 1;
}//      1是黑线   0是白线
int panduan2()         //======================================左侧循迹
{y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if ((z1 == 0) && (z2 == 0)){gxzuozhuan();}if ((z1 == 1) && (z2 == 0)){gzzhixing();}if (((z1 == 0) && (z2 == 1)) || (z2 == 1) || ((z1 == 1) && (z2 == 1)) || (zhong == 1)){gqyouzhuan();}count++;if ((y3 == 0) && (count > bushu))   //  -------------------- 检测到桶  过桶{while (1){y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if ((z1 == 0) && (z2 == 0)){gxzuozhuan();}if ((z1 == 1) && (z2 == 0)){gzzhixing();}if (((z1 == 0) && (z2 == 1)) || (z2 == 1) || ((z1 == 1) && (z2 == 1))){gqyouzhuan();}y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if (y3 == 1){while (1){y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if ((z1 == 0) && (z2 == 0)){gxzuozhuan();}if ((z1 == 1) && (z2 == 0)){gzzhixing();}if (((z1 == 0) && (z2 == 1)) || (z2 == 1) || ((z1 == 1) && (z2 == 1))){gqyouzhuan();}count1++;if (count1 > (guotong + zhengliang)){break;}}break;}}return 0;}return 1;
}//------------------------主函数---------------------------------------------------void loop()
{//gxzuozhuan();// zhixing();//  zhixingy();//leftleg.write(aa); leftfoot.write(bb);      rightleg.write(cc);     rightfoot.write(dd);//Serial.print(z3);int i;for (i = 0; i < star; i++)   //过黑线{zhixing();}ok();   //控制函数}//=================================================================================
void ok()
{int qwer = 1, i;count1 = 0;count2 = 0;while (1)     //右侧循迹 过一开始的桶{qwer = panduan1();if (qwer == 0){break;}}delay(50); //拐弯 过桶xzuozhuan();for (i = 0; i < times; i++){zuozhuan();}//=====================================while (1)     //斜着过桶{y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);zhixing();count2++;y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if (((z1 == 1) || (z2 == 1)) && (count2 < 6)) //保护机制{while (1){youzhuan();y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if ((z1 == 0) && (z2 == 0)){count2 = 7;break;}}}y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if (( (y2 == 1) || (z1 == 1) || (z2 == 1) || (zhong == 1) || (y1 == 1)) && (count2 > 6)){while (1){youzhuan();y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if ((y1 == 0) && (y2 == 0) && (z1 == 0) && (z2 == 0) && (zhong == 0)) //当都检测不到黑线时 跳出循环{break;}}break;}}//=====================================qwer = 1;     //开始左侧寻迹count1 = 0;count2 = 0;count = 0;while (1)     //左侧 巡线 绕过过第二个桶{qwer = panduan2();if (qwer == 0){break;}}delay(50);xyouzhuan();for (i = 0; i < times + tong2; i++){youzhuan();}count2 = 0;//================================================while (1)     //斜着过桶{y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);zhixingy();count2++;y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if ((count2 < 6) && ((y1 == 1) || (y2 == 1))){while (1){zuozhuan();y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if ((y1 == 0) && (y2 == 0)){count2 = 7;break;}}}y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if (((y1 == 1) || (y2 == 1) || (z2 == 1) || (z1 == 1) || (zhong == 1)) && (count2 > 5)){while (1){zuozhuan();y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);zhong = digitalRead(zhong1);if ((y1 == 0) && (y2 == 0) && (z1 == 0) && (z2 == 0) && (zhong == 0)){break;}}break;}}//======================================================qwer = 1;while (1){qwer = panduan1();if (qwer == 0){break;}}//=========================================================qwer = 1;count1 = 0;count2 = 0;count = 0;qwer = panduan1();qwer = panduan1();qwer = 1;while (1){qwer = panduan1();y1 = digitalRead(yg1);y2 = digitalRead(yg2);y3 = digitalRead(yg3);z1 = digitalRead(zg1);z2 = digitalRead(zg2);z3 = digitalRead(zg3);if ((z1 == 1) || (z2 == 1)){break;}}for (i = 0; i < star + 5; i++) //过终点线{zhixing();}}
void zhixingy()
{a = aa;b = bb;c = cc;d = dd;l = qql;r = qqr;s = ss;j = qqj;gongneng(a, b, c, d, s, l, r, j);
}void zszhixing()
{a = aa;b = bb;c = cc;d = dd;l = qszl;r = qszr;s = ss;j = qszj;gongneng(a, b, c, d, s, l, r, j);}
void yszhixing()
{a = aa;b = bb;c = cc;d = dd;l = qsyl;r = qsyr;s = ss;j = qsyj;gongneng(a, b, c, d, s, l, r, j);
}
void zhixing()
{a = aa;b = bb;c = cc;d = dd;l = ql;r = qr;s = ss;j = qj;gongneng(a, b, c, d, s, l, r, j);
}
void xzuozhuan()
{a = aa;b = bb;c = cc;d = dd;l = xzl;r = xzr;s = ss;j = xzj;gongneng(a, b, c, d, s, l, r, j);
}void zuozhuan()
{a = aa;b = bb;c = cc;d = dd;l = zl;r = zr;s = ss;j = zj;gongneng(a, b, c, d, s, l, r, j);
}void qzuozhuan()
{a = aa;b = bb;c = cc;d = dd;l = qzl;r = qzr;s = ss;j = qzj;gongneng(a, b, c, d, s, l, r, j);
}void youzhuan()
{a = aa;b = bb;c = cc;d = dd;l = yl;r = yr;s = ss;j = yj;gongneng(a, b, c, d, s, l, r, j);
}
void qyouzhuan()
{a = aa;b = bb;c = cc;d = dd;l = qyl;r = qyr;s = ss;j = qyj;gongneng(a, b, c, d, s, l, r, j);
}
void xyouzhuan()
{a = aa;b = bb;c = cc;d = dd;l = xyl;r = xyr;s = ss;j = xyj;gongneng(a, b, c, d, s, l, r, j);
}void gongneng(int a, int b, int c, int d, int s, float l, float r, int j)
{}//=============================================================================================================================================
void gzzhixing()//不需要改了  仅为程序命名错误  改右直行
{a = aa;b = bb;c = cc;d = dd;l = qsyl;r = qsyr;s = ss;j = qsyj;gongneng2(a, b, c, d, s, l, r, j);}void gzhixing()
{a = aa;b = bb;c = cc;d = dd;l = ql;r = qr;s = ss;j = qj;gongneng2(a, b, c, d, s, l, r, j);
}
void gxzuozhuan()
{a = aa;b = bb;c = cc;d = dd;l = xzl;r = xzr;s = ss;j = xzj;gongneng2(a, b, c, d, s, l, r, j);
}void gzuozhuan()
{a = aa;b = bb;c = cc;d = dd;l = zl;r = zr;s = ss;j = zj;gongneng2(a, b, c, d, s, l, r, j);
}
void gqzuozhuan()
{a = aa;b = bb;c = cc;d = dd;l = qzl;r = qzr;s = ss;j = qzj;gongneng2(a, b, c, d, s, l, r, j);
}
void gyouzhuan()
{a = aa;b = bb;c = cc;d = dd;l = yl;r = yr;s = ss;j = yj;gongneng2(a, b, c, d, s, l, r, j);
}
void gqyouzhuan()
{a = aa;b = bb;c = cc;d = dd;l = qyl;r = qyr;s = ss;j = qyj;gongneng2(a, b, c, d, s, l, r, j);
}
void gxyouzhuan()
{a = aa;b = bb;c = cc;d = dd;l = xyl;r = xyr;s = ss;j = xyj;gongneng2(a, b, c, d, s, l, r, j);
}void gongneng2(int a, int b, int c, int d, int s, float l, float r, int j)
{}

2017年山东省机器人比赛 双足竟步 arduino源代码(删去了关键步态程序 gongneng1 和 gongneng2)相关推荐

  1. 双足竞走机器人的意义_基于STM32双足竞步机器人的研究与设计

    龙源期刊网 http://www.qikan.com.cn 基于 STM32 双足竞步机器人的研究与设计 作者:卢士林 李彩霞 张奎庆 段忠臣 来源:<智能计算机与应用> 2016 年第 ...

  2. [足式机器人]Part1 双足和四足的运动Ch04——【Legged Robots that Balance 读书笔记】

    本文仅供学习使用 本文结合个人理解体会作者的思路,也从个人科研角度出发,部分翻译参考由:QQ群(2群legged robot that balance)提供,感谢他们为本文英文版翻译所做的贡献(但有些 ...

  3. 双足机器人课设报告_双足竞步机器人-智能步行者设计-技术报告

    第五章 步态规划 步态是在步行运动过程中,机器人的各个关节在时序和空间上的一种协调关系,通由各关节运动的一组时间轨迹来描述.步态规划的目标是产生期望步态,即产生在某个步行周期中的实现某种步念的各关节运 ...

  4. diy直立双足机器人_动手制作机器人,双足移动机器人DIY

    直立行走的双足机器人 首先要准备的材料主要有: 电机x1.橡皮筋x3.电源开关x1.电池x1.软吸管 竹签.纸皮板.冰淇淋棍若干 需要用到的工具有: 裁纸刀.剪刀.圆规.502胶水和热熔胶枪 1 用裁 ...

  5. diy直立双足机器人_速看!近期国内外机器人资讯大汇总

    导语 三季度即将过半,二季度机器人事件回顾,智览行业发展.二季度机器人行业呈现出了怎样的发展动态呢?从行业大角度出发,带领大家回顾过去二季度的行业精彩. 国内 钛米机器人钛元助力首款人工智能5G农业机 ...

  6. 双足机器人的稳定性判据_双足机器人稳定性判据研究

    2017年 5月 下 双足机器人稳定性判据研 究 刘丹丹 ,张舰行(沈阳城市学院 辽宁沈阳110000) 论述 225 [摘 要]双足机器人是 20世纪人类最伟大的发明之一,其具有的独特的双足运动方式 ...

  7. 双足竞走机器人的意义_双足竞走机器人设计1

    双足竞走机器人设计 国家级大学生创新训练项目 项目编号: 201210449116 孙亚军 1 ,王志 1 ,尤在勇 2 ( 1. 滨州学院自动化系,山东 滨州, 256600 : 2. 四川大学机械 ...

  8. 每公里配速9分18秒,双足机器人完成5公里慢跑

    内容描述:俄勒冈州立大学的 Cassie 在 53 分钟里完成了一段五公里慢跑,刷新了双足机器人的运动记录. 近日,来自美国俄勒冈州立大学的知名机器人研究团队 Agility Robotics 打造的 ...

  9. 装上螺旋桨,加州理工让只能行走的双足机器人「上了天」,还玩起了障碍滑板、走绳索...

    视学算法报道 编辑:杜伟.陈萍 能走能飞,这才是最酷的双足机器人吧?! 有的机器人可以行走,有的可以飞行.你见过既能行走又能飞行的双足机器人吗? 加州理工学院的研究人员就打造了这样一台机器人 LEON ...

最新文章

  1. ubuntu分屏软件_ubuntu14.04终端分屏terminator的安装使用与配置
  2. js函数 Number()、parseInt()、parseFloat()的区别:
  3. C#基础(七)虚函数
  4. 同一个联盟,同一个梦想 —— 微软 .NET 俱乐部 2006 年在线发布会
  5. c语言便签程序,Windows7便签程序快捷键
  6. KlayGE的Virtual Texturing技术定名
  7. MATLAB小记_fread的用法
  8. 【年末盛会】最值得参加的信息技术与计算机应用学术会议来了!
  9. 京东企业租赁11.11:新用户数环比增长786% 订单量环比增长519%
  10. 腾讯广告:广告场景下有哪些视觉算法应用?
  11. 被信息控制的我,心感不安
  12. python从网页提取文本_从网页中提取文本
  13. 原生JS与其他JS 区别
  14. linux下各种后缀名文件的压缩和解压缩
  15. Appdata中local是文件,系统盘下的文件目录
  16. 解决Java应用的后台错误:“操作符不存在: character varying = bytea“
  17. 拼接、比较与计算——哥德尔读后之十四
  18. asp.net 获得根文件夹在服务器上物理路径,asp.net获取网站目录物理路径示例
  19. 山东春考计算机组装与维修,山东春考计算机组装与维修模拟试题(11页)-原创力文档...
  20. 纯CSS 实现知乎滑动广告效果

热门文章

  1. 【计算机网络面试高频】-HTTP协议详解,HTTP协议常见问题
  2. Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
  3. Mysql同步数据到Elasticsearch(实时Canal)
  4. 【命名规则】小驼峰?大驼峰?
  5. 《鸟哥的私房菜基础篇》第四版学习笔记——第0章 计算机概论
  6. [百度笔试]百度笔试大集锦
  7. ubuntu14.04 iso硬盘安装
  8. My Sql报错:1273 - Unknown collation: ‘utf8_chinese_ci‘
  9. SAP中质量检验结果的清单列表及输出功能简单分析
  10. Computed property “XXX“ was assigned to but it has no setter