版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 float tim_1=0.0; /*时间变量:不用*/float gf_1=0.0; /*速度功率值 */int mic_1=0; /*声音值,AI8或AI12*/int gi_1=0; /*用控制是否跳出某房间循环的量:任务完成与否控制量*/int gi_2=0; /*相对的左边火焰亮度值*/int gi_3=0; /*相对的左右边火焰亮度值的差值*/int gi_4=0; /*相对的右边火焰亮度值*/int gi_5=0; /*高中、小学程序切换*/int gi_6=0; /*二号房回家时用来数线的量*/int gi_7=0; /*第一次去二号房时看到的有没有火的标记量*/int gi
2、_8=0; /*地面灰度设置值*/int gi_9=0; /*侧面PSD测距值*/int gi_10=0; /*区分环境光与蜡烛光的参考值*/int ma_1=0; /*前左PSD值AI0*/int ma_2=0; /*正前PSD值AI1*/int ma_3=0; /*前右PSD值AI2*/int ma_4=0; /*后右PSD值AI3*/int ma_5=0; /*正后PSD值AI4*/int ma_6=0; /*后左PSD值AI5*/int ma_7=0; /*前地面灰度值AI6*/int ma_8=0; /*后地面灰度值AI7*/int ma_9=0; /*回家时所用的地面灰度的二次测量
3、值*/int ma_10=0; /*正前正后PSD测距值,例值 220*/int sci_1=0; /*指南针读值*/void main() SCI_Set(0,9600,0,8,1 );/*串口设置:指南针的端口设置,小学、初中不用*/ /*/ /*以下为调试参数*/ gi_10=450; /*区分环境光与蜡烛光的参考值,约比环境光最小值小50,例值:450*/ gi_8=310; /*地面灰度设置值,原则:稳定地区分黑白,取黑白值的中间值,例值:300*/ gi_9=280; /*侧面PSD测距值,例值: 280*/ ma_10=280; /*正前正后PSD测距值,例值 280*/ gi_
4、5=1;/*小学取1,初高中取0*/ gf_1=1.0;/*功率值,范围0.01.0*/ /*/ while(1) mic_1=AI(8); if(mic_1 750) break; /SetMotor(0x1111,100,100,0,0); SetMotor(0x1111,(int)(100*gf_1),(int)(100*gf_1),0,0); wait( 0. ); while(1) /*四号房*/ /*/ while(1) ma_7 = AI(6); if(ma_7 gi_8) gi_2=AI(9); gi_4=AI(11); if(gi_2 gi_10) | (gi_4 gi_10
5、) /SetMotor(0x1111,90,10,0,0); SetMotor(0x1111,(int)(90*gf_1),(int)(10*gf_1),0,0); /*有火时进四号房*/ wait( 0. ); /SetMotor(0x1111,80,80,0,0); SetMotor(0x1111,(int)(80*gf_1),(int)(80*gf_1),0,0); /*有火时进四号房*/ wait( 0. ); while(1) ma_7 = AI(6); gi_2=AI(9); if(ma_7 gi_8) & (gi_2 300)/*四号灭火*/ StopMotor(0x1111);
6、 /SetMotor(0x1111,100,-100,0,0); SetMotor(0x1111,(int)(100*gf_1),(int)(-100*gf_1),0,0); wait( 0. ); StopMotor(0x1111); DO( 0x1, 1 ); tim_1 =seconds(); wait( 0. );/*机器人停顿灭火时间*/ DO( 0x1, 0 ); /*gi_5=1;*小学*/ break; else SubRoutine_2 (); if(gi_5 = 1) gi_1=1; break; SubRoutine_3 (); gi_1 = 1 ; break; els
7、e /*出四号房*/ StopMotor(0x1111); wait( 0. ); /SetMotor(0x1111,-60,-100,0,0); SetMotor(0x1111,(int)(-40*gf_1),(int)(-100*gf_1),0,0); wait( 0. ); break; else SubRoutine_1 (); if(gi_1 = 1) break; /*三号房*/ /*/ while(1) ma_8 = AI(7); if(ma_8 gi_8) gi_2=AI(13); gi_4=AI(15); if(gi_2 gi_10) | (gi_4 gi_10) /SetM
8、otor(0x1111,-80,-10,0,0); SetMotor(0x1111,(int)(-80*gf_1),(int)(-10*gf_1),0,0); /*有火时进三号房*/ wait( 0. ); while(1) ma_8 = AI(7); gi_2=AI(15); if(ma_8 gi_8) & (gi_2 300) /*三号灭火*/ StopMotor(0x1111); DO( 0x10, 1 ); tim_1 =seconds(); wait( 0. );/*机器人停顿灭火时间*/ DO( 0x10, 0 ); /*gi_5=1;*小学*/ break; else SubRo
9、utine_5 (); if(gi_5 = 1) gi_1=1; break; SubRoutine_6 (); gi_1 = 1 ; break; else StopMotor(0x1111); /*没火时出三号房*/ wait( 0. ); /SetMotor(0x1111,100,15,0,0); SetMotor(0x1111,(int)(100*gf_1),(int)(15*gf_1),0,0); wait( 0. ); break; else SubRoutine_4 (); if(gi_1 = 1) break; /*一(-2-1)号房*/ /*/ while(1) ma_7 =
10、 AI(6); if(ma_7 gi_8) gi_2=AI(9); gi_4=AI(11); if(gi_2 gi_10) | (gi_4 gi_10)/*此处不用改(第一次去二号门口测光,不进)*/ gi_7 = 1 ; StopMotor(0x1111); /*第一次从二号门出*/ wait( 0. ); /SetMotor(0x1111,-80,-20,0,0); SetMotor(0x1111,(int)(-10*gf_1),(int)(-80*gf_1),0,0); wait( 0.40000 ); while(1) ma_8 = AI(7); if(ma_8 gi_8) gi_2=
11、AI(13); gi_4=AI(15); if(gi_2 gi_10) | (gi_4 gi_10) /SetMotor(0x1111,-80,-15,0,0); SetMotor(0x1111,(int)(-80*gf_1),(int)(-15*gf_1),0,0); /*有火时进一号房*/ wait( 0. ); while(1) ma_8 = AI(7); gi_2=AI(15); if(ma_8 gi_8) & (gi_2 300) /*一号灭火*/ StopMotor(0x1111); DO( 0x10, 1 ); tim_1 =seconds(); wait( 0. ); /*机器
12、人停顿灭火时间*/ DO( 0x10, 0 ); /*gi_5=1;*小学*/ break; else SubRoutine_5 (); if(gi_5 = 1) gi_1=1; break; SubRoutine_10 (); gi_1 = 1 ; break; else StopMotor(0x1111); wait( 0. ); /SetMotor(0x1111,-60,60,0,0); SetMotor(0x1111,(int)(-60*gf_1),(int)(60*gf_1),0,0); /*最后去2号房之前(即从一号去二号)*/ wait( 0. ); StopMotor(0x11
13、11); /SetMotor(0x1111,100,55,0,0); SetMotor(0x1111,(int)(100*gf_1),(int)(55*gf_1),0,0); ma_2 = AI(1); ma_3 = AI(2); while(ma_2 = ma_10) & (ma_3 = gi_9)/*最后去2号房之前*/ ma_2 = AI(1); ma_3 = AI(2); /*最后去2号房之前*/ SetMotor(0x1111,(int)(70*gf_1),(int)(70*gf_1),0,0); wait( 0.2 ); SetMotor(0x1111,(int)(50*gf_1)
14、,(int)(-50*gf_1),0,0); wait( 0.2 ); gi_1=2; break; else SubRoutine_4 (); if(gi_1 = 2) | (gi_1 = 1) break; if(gi_1 = 2) | (gi_1 = 1) break; else SubRoutine_7 (); if(gi_1 = 1) break; /*二号房*/ /*/ while(1) ma_7 = AI(6); if(ma_7 gi_8) gi_2=AI(9); gi_4=AI(11); if(gi_7=1)gi_2=10;/*第一次已*/ /*/ if(gi_2 1023)
15、| (gi_4 gi_10) /SetMotor(0x1111,50,80,0,0); SetMotor(0x1111,(int)(50*gf_1),(int)(80*gf_1),0,0); wait( 0. ); /SetMotor(0x1111,25,70,0,0); SetMotor(0x1111,(int)(10*gf_1),(int)(100*gf_1),0,0); wait( 0.3500 ); while(1) ma_7 = AI(6); gi_2=AI(11); if(ma_7 gi_8) & (gi_2 gi_9) & (ma_2 ma_10) /SetMotor(0x111
16、1,100,100,0,0); SetMotor(0x1111,(int)(100*gf_1),(int)(100*gf_1),0,0); else if(ma_1 gi_9) & (ma_2 gi_9) & (ma_2 ma_10) /SetMotor(0x1111,-40,40,0,0); SetMotor(0x1111,(int)(-40*gf_1),(int)(40*gf_1),0,0); else /SetMotor(0x1111,90,25,0,0); SetMotor(0x1111,(int)(90*gf_1),(int)(25*gf_1),0,0);/*行走过程中转弯速度*/
17、/wait( 0. ); void SubRoutine_2( ) /*趋光*/ gi_3=AI(9)-AI(11); if(gi_3 10) /SetMotor(0x1111,13,50,100,100); SetMotor(0x1111,(int)(13*gf_1),(int)(80*gf_1),100,100); else /SetMotor(0x1111,90,90,0,0); SetMotor(0x1111,(int)(90*gf_1),(int)(90*gf_1),0,0); /wait( 0. ); /*/void SubRoutine_3( ) /*4号回家*/ /SetMot
18、or(0x1111,-100,-40,100,100); SetMotor(0x1111,(int)(-100*gf_1),(int)(-40*gf_1),100,100); wait( 0. ); DO( 0x, 0 ); ma_9 = 1023 ; resettime(); while(1) ma_8 = AI(7); if(ma_8 gi_8) wait( 0. ); ma_9 = AI(7); if(ma_9 = gi_8) StopMotor(0x1111); break; else tim_1 =seconds(); if(tim_1 gi_9) & (ma_5 ma_10) /S
19、etMotor(0x1111,-100,-100,0,0); SetMotor(0x1111,(int)(-100*gf_1),(int)(-100*gf_1),0,0); else if(ma_6 gi_9) & (ma_5 gi_9) & (ma_5 ma_10) /SetMotor(0x1111,40,-40,0,0); SetMotor(0x1111,(int)(40*gf_1),(int)(-40*gf_1),0,0); else /SetMotor(0x1111,-90,-25,0,0); SetMotor(0x1111,(int)(-90*gf_1),(int)(-20*gf_1
20、),0,0);/*行走过程中转弯速度*/ /wait( 0. ); void SubRoutine_5( ) /*趋光B*/ gi_3=AI(13)-AI(15); if(gi_3 10) /SetMotor(0x1111,-60,-13,0,0); SetMotor(0x1111,(int)(-80*gf_1),(int)(-13*gf_1),0,0); else /SetMotor(0x1111,-90,-90,0,0); SetMotor(0x1111,(int)(-90*gf_1),(int)(-90*gf_1),0,0); /wait( 0. ); /*/void SubRoutine_6( ) /*三号回家*/ /SetMotor(0x1111,-100,100,0,0); SetMotor(0x1111,(int)(-100*gf_1),(int)(100*gf_1),0,0); wait( 0. ); StopMotor(0x1111); ma_7 = AI(6); while(1) ma_7 = AI(6); if(ma_7 = 0.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风电电缆敷设施工环保方案
- 中山幼儿园安全地垫施工方案
- 专项施工方案严重缺陷清单(试行)
- 美国401(k)计划:发展历程运作机制与启示
- 中医院人力资源管理SOP文件
- 自来水管网改造项目竣工验收文件
- 2026年马鞍山市中医院公开招聘工作人员12名考试模拟试题及答案解析
- 2026年芜湖市劳动保障人力资源有限公司实习生公开招募4名笔试备考试题及答案解析
- 新时代思政课赋能高职院校STEM教育实施方案
- 2026海南三亚崖州湾国家实验室智慧农业技术中心招聘技术人员6人笔试备考题库及答案解析
- 2026届湖北武昌区高三下学期5月供题数学试卷+答案
- 2026山东第一医科大学附属省立医院(山东省立医院)招聘初级岗位人员50人笔试备考题库及答案解析
- 四川省蓉城名校联盟2025-2026学年高二下学期期中考试语文试卷
- 2026年阜阳卷烟材料有限责任公司新员工招聘4人笔试备考试题及答案详解
- 2026年纪检监察技能竞赛案例
- 天津中考:历史必背知识点总结
- 2026天津市津鉴检测技术发展有限公司社会招聘工作人员3人笔试备考试题及答案解析
- 2026北京农业职业学院招聘20人备考题库及答案详解(各地真题)
- 国土空间总体规划动态维护方案投标文件(技术方案)
- 2026中国矿产资源集团总部及所属单位社会招聘笔试历年参考题库附带答案详解
- 2026年道教考证过关检测【必考】附答案详解
评论
0/150
提交评论