计算机表演赛--模块化程序设计基本原理.doc_第1页
计算机表演赛--模块化程序设计基本原理.doc_第2页
计算机表演赛--模块化程序设计基本原理.doc_第3页
计算机表演赛--模块化程序设计基本原理.doc_第4页
计算机表演赛--模块化程序设计基本原理.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块化程序设计基本原理模块化的灭火机器人程序基本语句由顺序语句、选择语句、循环语句构成,为了便于重复利用和修改调试,要求把功能相对独立的程序段封装成函数。下面举些简单例子:顺序语句:代码一句一句往下运行,如:motor(0,100);motor(1,100);sleep(1.0);stop();选择语句:有条件的决定运行不运行,下面是一些简单的形式:1)if/如果满足条件就运行里面的语句2)if/如果满足条件就运行里面的语句else/否则就运行里面的语句3)if/如果满足条件就运行里面的语句else if/如果满足条件就运行里面的语句else if/如果满足条件就运行里面的语句4)if/如果满足条件就运行里面的语句else if/如果满足条件就运行里面的语句else if/如果满足条件就运行里面的语句else/否则就运行里面的语句循环语句:循环运行直到条件不满足1)while(1)/无条件循环2)while(条件)/条件循环循环语句必须要有不满足退出的条件,否则机器人就会永远不动,或者永远在做相同的动作封装成函数:如 把整个灭火程序分为 fire()/灭火函数 gohome()/回家函数 migong_left()/左手行走函数本文的论述基于下面的简单机器人简单配置的纳英特灭火机器人除了基本套件外,需要个火焰检测传感器,个红外避障传感器,个灭火风扇,及把他们组装在机器人身体上的积木套件灭火风扇安装在机器人前部,17.5cm高度,假设接motor2接口个火焰检测传感器安装在机器人前部,17.5cm高度,假设接3号模拟口硬件的组装调试请问你的指导老师在这里我们先不讨论怎样走个房间,怎样走的快,怎样灭的稳,怎样回家,那么灭火程序的基本原理就是:)没有发现火时走迷宫)发现火后去灭火根据上面的基本原理,主要程序可以有下面一些形式-例1)void main()/左手灭火程序while(1)/永远循环使用下面的代码检测所有传感器 migong_left();/如果没有发现火焰,走左手法则if (analog(3)50)/如果没有发现火焰,走左手法则migong_left();else/如果发现了火焰 fire();/灭火 break;/退出左手法则-例:void main()/左手灭火程序while(analog(3)50)/如果没有发现火焰,走左手法则migong_left(); fire();/灭火/发现了火焰/退出了上面的循环后 stop();-灭火程序设计的基本方法)从顶往下的设计方法例如:我们设计了下面的主程序void main()/左手灭火程序while(analog(3)15)/如果没有发现火焰,走左手法则migong_left(); fire();/灭火/发现了火焰/退出了上面的循环后 stop();但由于migong_left()和fire()函数没有设计好,机器人还是不会灭火,我们可以增加个函数:void migong_left()motor(0,60);motor(1,60);void fire()motor(2,100);/如果发现风扇转反,修改为 motor(2,-100)sleep(5.0);就这样,你一生中第一个机器人灭火程序就产生了,只是他不会真的走迷宫,需要把蜡烛放在机器人前面米左右的地方,然后打开电源开关你只要把migong_left()函数修改为真正的左手法则,就这样,一个不是很稳定,很慢的机器人灭火程序就在你的手下产生了!)自下往上的设计方法例如:先编写程序让你的机器人能走迷宫void main()/主程序while(1)migong_left();void migong_left()/左手法则代码假设左红外接11口,左前红外接12口,前红外接13口. if (digital(12)=0 | digital(13)=0) /前有墙右转motor(0, 30); motor(1, -90); else if (digital(11) = 0) /左有墙前进motor(0, 70); motor(1, 70);else /什么也没看到,左转motor(0, -60);motor(1, 60);motor(0, 80); motor(1, 80);motor(0, -40);motor(1, 40);但他只会走迷宫,不会灭火,我们把主程序修改为:void main()/主程序while(1)migong_left();if (analog(3)30)/如果发现了火焰motor(2,100);/灭火如果发现风扇转反,修改为 motor(2,-100) sleep(5.0); stop(); break;/退出左手法则左手法则迷宫搜索算法左手法则:左边有墙前进,前面有墙右转,什么也看不到左转或者:看到墙壁划右弧,看不到墙壁划左弧如果是纳英特机器人,假设左红外接11口,左前红外接12口,前红外接13口.参考代码如下:-void migong_left()/左手法则代码 if (digital(12)=0 | digital(13)=0) /前有墙右转motor(0, 30); motor(1, -90); else if (digital(11) = 0) /左有墙前进motor(0, 70); motor(1, 70);else /什么也没看到,左转motor(0, -60);motor(1, 60);motor(0, 80); motor(1, 80);motor(0, -40);motor(1, 40);为了调试这段代码,可以加上主程序void main()while(1)migong_left();另一种算法,使用个传感器.-void migong_left()/左手法则代码假设左红外接11口,前红外接13口. if (digital(11)=0 | digital(13)=0) /看到墙壁划右弧st=mseconds();/记下现在的时间while(mseconds()-st100L)/划右弧0.1秒,请大家调节好毫秒这个时间变量motor(0, 70);/ 转动分量可调节motor(1, -70);motor(0, 70); /前进分量可调节motor(1, 70);else/看不到墙壁划左弧st=m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论