灭火机器人程序

合集下载

灭火机器人操法

灭火机器人操法

灭火机器人操法灭火机器人掩护进攻操消防灭火机器人主要用于大型火场大强度、密集型使用灭火剂灭火,也可用于油罐类、化工类火灾的现场冷却,由于水柱充实,覆盖面积广等良好的作用,应用于大型的火灾扑救。

同时,由于不需战斗人员现场控制,减少了战斗人员的使用,并极大地保护了战斗人员的生命安全。

基于火灾现场情况复杂,辐射热源对人身体的伤害距离因素考虑,操法确定距离55米。

一、目的通过训练,可以使战斗员数量掌握消防灭火机器人的设置方法,掌握机器人设置和水枪掩护进攻等行动方法,提高各组相互配合和攻坚作战能力。

便于在很短的时间设置机器人阵地,更加快速的扑救火灾。

二、场地器材在长度为55米的场地上,分别起点线、在35米处标出一个延伸点,55米处标出消防灭火机器人放置线。

起点线处放置标配水罐消防车一辆,出水口与起点线相齐,另外配置止水器、照明灯具(夜晚作战)等工具。

水枪掩护组和机器人设置组分别佩戴好个人防护装备,并携带照明灯具、对讲机等器材。

操作人员在车辆一侧成跨立姿势。

三、操作程序当听到“开始”的口令后,水枪掩护组1号员在起点线处连接止水器及水枪,2号员铺设2盘80毫米水带并连接,连接消防车出水口,开启水阀,1号员将止水器与2号员留下的水带接口相连接,2号员携带1盘80毫米水带,并示意供水,然后协助1号员出水枪向前推进。

3号员负责消防灭火机器人紧随1、2号员,到达35米处,1号员关闭止水器,卸下水枪,2号员向后甩开携带的水带, 一端与止水器相连接,一端递与1号员与水枪相连,并重新开启止水器,协助1号员向前推进至55米机器人设置处,掩护3号员将消防灭火机器人设置好。

4号员在消防车一侧起点线处。

铺设一盘80毫米水带,并携带两盘80毫米在1、2号员的掩护下向前移动至消防灭火机器人设置处,反身折回,将起点线处接口与消防车出水口相连,开启水阀,示意供水。

1、2、3号员在消防灭火机器人设置完毕出水后,举手“喊好”。

听到“收操”的口令后,战斗员按相反顺序收卷器材,放回原处,成立正姿势。

灭火机器人教程[1]

灭火机器人教程[1]
• ⑶ 设置参数说明: • 眼睛参数:红色 绿色 黄色 闪烁 熄灭 。 • 先选中左眼或右眼,才可以对相应眼睛进行设置

灭火机器人教程[1]
设置眼睛
灭火机器人教程[1]
计算
• ⑴ 功能:“计算”模块可用于加减乘除计算。 • ⑵ 操作:用鼠标将“计算”模块移到流程图生成
区,并连接在程序中。右击“计算”模块,在弹 出的对话框中输入计算表达式。 • ⑶ 设置参数说明: • 计算结果赋值设置:点击整型变量按钮,随之弹 出“变量百宝箱”对话框,在“变量百宝箱”对 话框中选择变量,用来存放计算结果。 • 运算符号设置:在下拉列表框中选择运算符号。 • 计算表达式设置:可以是数与数运算,引用变量 与引用变量运算,也可以是数与引用变量运算。
灭火机器人教程[1]
发音
灭火机器人教程[1]
显示
• ⑴ 功能:“显示”模块主要用于在机器人LCD液 晶显示屏上显示信息。
• ⑵ 操作:用鼠标将“显示”模块移到流程图生成 区,并连接在程序中。设置时,右击“显示”模 块,在弹出的对话框中输入显示信息(英文、数 字等)。选择“引用变量”,可以显示出程序中 各种全局变量。显示模块与传感器模块相配合, 就可以显示各个传感器的检测值。
灭火机器人教程
2020/11/21
灭火机器人教程[1]
仿真平台介绍
• 广茂达伙伴机器人有限公司开发的“能力 风暴VJC1.5仿真版
• “VJC1.5开发版”简便易学 的图形化编程风格。
• 同时,用户能在PC机上对程序进行仿真, 通过虚拟机器人模拟“能力风暴智能机器 人”的行为,从而验证软件的正确性,提 高程序设计与调试能力。
序中。右击“启动电机”模块,在弹出的对话框中输入电机功率参数 ,可以实现左右两只主动轮按不同速度、不同方向行走。 • ⑶ 设置参数说明: • 左/右电机设置:可用两种方式进行设置。第一种方式,可在对话框中 直接输入左/右电机功率值。当左右电机功率相同时,机器人直线行走 。当左右电机功率不同时,机器人会走弧线。第二种方式,可拖动游 标设置电机功率。 • 扩展电机设置:选中扩展电机即可。扩展电机的功率为100。

灭火机器人课程设计报告

灭火机器人课程设计报告

灭火机器人课程设计报告灭火机器人课程设计报告一、引言随着技术的发展,人工智能机器人已经逐渐融入我们的日常生活,成为解决问题的重要工具。

在这个课程设计中,我们将开发一款基于机器学习技术的灭火机器人。

通过模拟真实的火灾救援场景,机器人需要学会识别火源、规划安全路径,并采取正确的灭火策略。

这个项目将综合运用机器学习、路径规划、机械设计等多方面的知识,旨在提高学生的创新思维和实践能力。

二、机器人硬件设计1、移动平台:为了能让机器人移动到指定的位置,我们选择使用轮式移动平台。

通过配置多个传感器,机器人可以感知周围环境,确保在复杂地形中稳定移动。

2、机械臂与灭火装置:为了实现抓取和操作灭火设备的功能,我们设计了一款具有多个自由度的机械臂。

在机械臂的末端,安装了一个可以喷射灭火剂的装置。

3、传感器系统:机器人配备了火焰传感器、温度传感器和烟雾传感器,以检测火灾位置和程度。

此外,还安装了红外摄像头,用于识别和避开障碍物。

三、机器学习算法我们采用深度学习算法来训练机器人的火灾识别模型。

首先,我们从大量火灾图片中提取出特征,然后使用卷积神经网络(CNN)进行训练。

通过训练,模型能够根据摄像头捕捉的图像,准确判断是否存在火源。

四、路径规划算法机器人需要从起点到达火灾地点,期间需要避开障碍物。

为此,我们采用了基于A算法的路径规划方法。

A算法是一种启发式搜索算法,能够根据当前状态和启发式信息,寻找最短路径。

通过定义每个节点的代价,算法能够计算出从起点到目标点的最短路径。

五、控制系统机器人的行为由嵌入式控制系统控制。

该系统包括一个主控制器和多个从控制器。

主控制器负责接收用户的指令和传感器数据,从控制器负责执行主控制器的命令,控制机器人的移动和机械臂的操作。

主控制器通过无线通信与从控制器进行数据交换。

六、实验与结果为了验证机器人的性能,我们在实验室环境下进行了一系列测试。

测试中,机器人成功识别了火源,并根据路径规划算法避开了障碍物,最终到达火灾地点,成功执行了灭火任务。

机器人灭火程序

机器人灭火程序
drive (100,0);/*前进*/
}
else if (ir_v==0b10)/*左前有障碍*/
{
drive (0,-100);/*右转*/
sleep(0.15);
drive (100,0);/*前进*/
}
else if (ir_v==0b11)/*两边有障碍*/
{
drive (0,50);/*左转*/
drive(0,100);
sleep(0.5);
}
void ir_avoid()/*红外避障模块*/
{
int ir_v;
ir_v=ir_detect();/*务必先标定红外避障传感器灵敏度*/
if (ir_v==0b01)/*右前有障碍*/
{
drive (0,40);/*左转*/
sleep(0.15);
机器人灭火程序(交互式C语言)
void lb()/*火焰检测模块*/
{
int L;/*定义左火焰传感器变量*/
int R;/*定义右火焰传感器变量*/
int U;/*定义探测地面光敏传感器变量*/
L=analog(photo_left);/*将左火焰传感器检测值赋予变量L*/
R=analog(photo_right);/*将右火焰传感器检测值赋予变量R*/
sleep(0.10);
}
ir_avoid();
lb();
}
}
stop();/*关闭电机*/
drive(0,-50);/*右转一个角度*/
sleep(0.1);/*延时(延时时间按右转角度要求调整)*/
stop();/*关闭电机*/
fire_fight();/*进入灭火模块*/

灭火机器人程序

灭火机器人程序

灭火机器人程序在当今科技飞速发展的时代,灭火机器人作为一种创新的消防工具,正逐渐发挥着越来越重要的作用。

灭火机器人能够在危险的火灾现场替代人类执行灭火任务,不仅可以保护消防员的生命安全,还能更高效、精准地进行灭火作业。

而实现这些功能的核心,就在于其背后复杂而精妙的程序设计。

灭火机器人的程序设计需要考虑众多因素。

首先,要让机器人能够准确感知火灾环境。

这就需要配备各种传感器,如温度传感器、烟雾传感器、图像传感器等。

程序要能够实时接收并处理这些传感器传来的数据,判断火灾的规模、位置和火势发展趋势。

在感知到火灾后,机器人需要具备自主导航的能力,能够迅速、安全地抵达火灾现场。

这涉及到路径规划算法的编写。

程序要根据建筑物的布局、障碍物的分布等信息,计算出最优的行进路线。

同时,还要能够实时调整路线,以应对突发情况,比如新出现的障碍物或者火灾现场的变化。

灭火机器人的灭火手段也多种多样,常见的有喷水、喷射灭火剂等。

程序要根据火灾的类型和程度,控制相应的灭火装置进行工作。

例如,如果是普通的固体火灾,可能主要使用喷水灭火;而对于化学物品火灾,则需要精准地喷射特定的灭火剂。

为了确保灭火效果,程序还需要对灭火过程进行监控和评估。

通过实时监测火灾现场的温度、烟雾浓度等参数的变化,判断灭火工作是否有效。

如果效果不佳,要及时调整灭火策略,比如增加灭火剂的喷射量或者改变喷射角度。

在程序设计中,还必须考虑机器人的能源管理。

灭火机器人在执行任务时需要消耗大量的能源,如果能源耗尽,机器人将无法继续工作。

因此,程序要合理安排机器人的能源使用,在保证完成灭火任务的前提下,尽量延长工作时间。

比如,在火势较小或者暂时不需要全力灭火的阶段,适当降低机器人的工作功率,节省能源。

此外,灭火机器人还需要具备与指挥中心和其他救援设备的通信能力。

程序要实现数据的实时传输,让指挥中心能够了解机器人的工作状态和火灾现场的情况,以便做出更准确的决策。

同时,机器人也要能够接收指挥中心的指令,根据指令调整工作模式。

《第十七课机器人灭火》作业设计方案-初中信息技术浙教版13九年级全册自编模拟

《第十七课机器人灭火》作业设计方案-初中信息技术浙教版13九年级全册自编模拟

《机器人灭火》作业设计方案(第一课时)一、作业目标本课作业设计旨在培养学生们的编程思维、机器人操作技能以及安全意识。

通过完成本课时作业,学生应能理解机器人灭火的基本原理,掌握简单的编程逻辑,并能够初步操作机器人进行灭火模拟。

二、作业内容1. 理论学习:学生需认真阅读《机器人灭火》课程教材,了解机器人灭火的基本原理和操作流程。

2. 编程实践:学生需使用信息技术课程所学的编程知识,编写一段简单的程序,该程序应能使机器人识别火源、规划路径并成功灭火。

3. 模拟操作:在教师指导下,学生需在模拟环境中操作机器人,进行灭火模拟。

学生需注意机器人的移动速度、方向以及灭火动作的准确性。

4. 小组讨论:学生需与小组内同学交流编程思路和操作经验,互相学习,共同进步。

5. 记录与报告:学生需将本次作业的操作过程、程序代码及遇到的问题记录在作业报告中,为后续的课程学习提供参考。

三、作业要求1. 理论学习要求:学生需认真阅读教材,理解机器人灭火的基本原理和操作流程,并在作业报告中注明自己的理解与感悟。

2. 编程实践要求:学生需使用所学编程知识,编写出能够成功识别火源、规划路径并灭火的程序。

程序代码需清晰、简洁,并附有必要的注释。

3. 模拟操作要求:学生需在教师指导下进行模拟操作,注意操作规范,保证机器人的安全与准确。

4. 小组讨论要求:学生需积极参与小组讨论,分享自己的编程思路和操作经验,互相学习,共同进步。

5. 记录与报告要求:学生需认真填写作业报告,记录操作过程、程序代码及遇到的问题,为后续的课程学习提供参考。

报告需字迹工整、内容完整。

四、作业评价教师将根据学生的理论学习、编程实践、模拟操作、小组讨论及记录与报告等方面进行评价。

评价标准包括:理论理解程度、编程逻辑与代码质量、操作准确性与规范性、小组讨论的参与度及记录报告的完整性等。

五、作业反馈教师将对每位学生的作业进行认真批改,指出存在的问题及改进建议。

同时,教师还将对优秀作业进行展示与表扬,激励学生们积极参与信息技术课程的学习。

《高台灭火机器人的制作与编程导学案》

《高台灭火机器人的制作与编程导学案》

《高台灭火机器人的制作与编程》导学案导学目标:通过本次进修,学生将掌握高台灭火机器人的制作与编程技术,了解机器人在灭火救援领域的应用,培养学生的动手能力和创新思维。

一、导入引言你有没有想过,在面对火灾时,能够有一种机器人来帮助我们灭火?今天我们就要进修如何制作和编程一种高台灭火机器人,让它帮助我们应对火灾危机。

二、进修内容1. 高台灭火机器人的原理和结构- 高台灭火机器人是一种能够在高空建筑物上进行灭火救援的机器人,它通常由机械臂、火焰探测器、喷水装置等部件组成。

- 机器人通过火焰探测器检测到火灾后,会自动挪动到火点位置,并利用喷水装置进行灭火操作。

2. 制作高台灭火机器人的材料准备- Arduino主控板- 电机驱动模块- 电机- 火焰传感器- 无线模块- 电池- 喷水装置3. 编程设计- 利用Arduino编程软件,编写机器人的控制程序,实现火焰探测、挪动和喷水等功能。

- 设计机器人的运动轨迹和灭火策略,确保机器人能够高效地进行灭火救援操作。

三、实践操作1. 按照提供的制作材料和步骤,进行高台灭火机器人的组装和毗连。

2. 在Arduino编程软件中编写机器人的控制程序,并上传到Arduino主控板中。

3. 进行实地测试,检验机器人的火焰探测、挪动和喷水功能是否正常。

四、总结反思通过本次进修,我们不仅掌握了高台灭火机器人的制作和编程技术,还了解了机器人在灭火救援领域的重要应用。

希望同砚们能够在以后的进修和生活中,充分发挥创造力,利用科技手段解决实际问题。

五、拓展延伸1. 可以尝试改进高台灭火机器人的设计,增加更多功能和性能。

2. 探讨机器人在其他领域的应用,如医疗、教育、农业等。

3. 参与机器人比赛或展示活动,展示自己的制作效果和创新能力。

通过本次进修,置信同砚们对高台灭火机器人的制作和编程有了更深入的了解,希望大家能够在未来的进修和生活中不息探索和创新,为科技发展贡献自己的力量。

灭火机器人教程

灭火机器人教程

灭火机器人教程引言灭火机器人是一种自动化设备,用于在火灾发生时执行灭火任务。

它不仅能够保护人们的生命安全,还可以有效地减少火灾对环境和财产的破坏。

本教程将介绍灭火机器人的工作原理、使用方法以及必要的安全事项。

1. 灭火机器人的工作原理灭火机器人通常由机械结构、电子系统和控制系统等组成。

其工作原理主要包括以下几个方面:1.1 机械结构灭火机器人的机械结构由底盘、臂架、水泵等组成。

底盘通常由轮子或履带构成,用于移动机器人到达火灾现场。

臂架可以实现多个方向的伸缩和旋转,以便灭火器材的准确投放。

水泵用于将水或灭火剂从水源供给到火灾现场。

1.2 电子系统灭火机器人的电子系统包括传感器、控制器和通信设备。

传感器用于检测火灾的位置、温度和烟雾等信息,以便机器人能够准确地定位和判断火灾现场。

控制器则负责控制机器人的运动和操作,以达到灭火的目的。

通信设备可以与指挥中心或其他机器人进行数据交换和协同作业。

1.3 控制系统灭火机器人的控制系统可分为自主控制和远程控制两种模式。

在自主控制模式下,机器人能够独立地探测和灭火,根据事先设定的策略进行操作。

在远程控制模式下,操作员可以通过遥控器或计算机控制机器人的移动和操作。

2. 灭火机器人的使用方法灭火机器人的使用方法主要包括以下几个步骤:2.1 火灾侦测灭火机器人会通过传感器检测火灾的位置、温度和烟雾等信息。

一旦检测到火灾,机器人将自动进入灭火模式。

2.2 灭火器材准备机器人在灭火前需要准备好灭火器材,如水泵、泡沫灭火剂等。

操作员可以在指挥中心或远程控制设备上进行相应的操作。

2.3 灭火操作灭火机器人将根据火灾的位置和性质选择合适的灭火方法。

它可以使用水枪或喷射泡沫灭火剂等进行灭火。

2.4 灭火监控在进行灭火操作时,机器人会实时监控灭火效果和火势的变化。

如果火势得到有效控制,机器人将继续执行灭火任务,否则将采取相应的应急措施。

2.5 灭火结束一旦火势得到有效控制,机器人将停止灭火操作,并等待进一步的指令或返回指定位置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

红外传感器接法前红外:数字9左红外:数字15左45度角红外:数字10右45度角红外:数字8右红外:数字14火焰传感器接法左火焰:模拟3中火焰:模拟5右火焰:模拟4(底部)灰度传感器:模拟2声控传感器:模拟6程序说明#define p 120 //定义火焰传感器检测到火焰的返回值int k,j,i=0,n,b=1,c=1; //程序控制变量,不必更改int m=i;int pro,end=1;void main() //主程序{while(analog(6)>100) //声控启动{}while(!(analog(2)>100)) //走出白色超始区{motor(0,80);motor(1,80);}pro=start_process(test()); //启动地面标志线检测进程while(1) //灭火与迷宫程序切换{if (analog(3) {fire();}else //没有发现火焰,进入迷宫子程序{migong();}}void migong() //迷宫子程序{if(digital(8)==0 II digital(9)==0) //如果前方或右45度角红外检测到障碍物,左转{motor(0,-70); //根据情况,调节功率参数,以下雷同motor(1,70);}else if(digital(14)==0 && digital(9)==1 && digital(8)==1) //如果只右方有障碍物,直行{motor(0,100);motor(1,100);}else //如果没有障碍物,右转{motor(0,100);motor(1,-100);motor(1,10);motor(0,90);}if((i>2)&&(i>m)) //如果标志线数大于2且标志线有变化(针对1、2、3号房间){stop();while(analog(3)>150 && analog(5)>150 && analog(4)>150) //如果没有检测到火焰{motor(0,70); //右转motor(1,-70);if(digital(14)==0) //右红外检测到障碍物,停止转动break;}m=i+1; //更改标志线的对比变量}if(i==1 && b && (analog(3)>150 && analog(5)>150 && analog(4)>150)) //4号房间,检测到第1条标志线,且没有火焰{while(digital(9)==0 II digital(8)==0 II digital(14)==0) //任意右手红外传感器有障碍物,右转{motor(0,70);motor(1,-70);}while(digital(9)==1) //前方传感器没有障碍物,右前进{motor(0,100);motor(1,70);}b=0; //控制变量}}void fire() //灭火子程序{if((i>4 II i<8) && c) //如果在2号房间{while(analog(3) {motor(0,-60);motor(1,60);}motor(0,60); //强制直行一段motor(1,60); //主要是解决2号房间右手法则灭火时的碰墙的情况sleep(0.6);c=0;}while(analog(5)<10 && analog(2)<60) //如果火焰距离合适且检测到地面标志线,灭火{motor(0,-10); //后退一段motor(1,-10);sleep(0.15);stop();motor(2,100); //灭火sleep(2.000);stop();motor(0,-70); //灭完火,后退一段motor(1,-100);sleep(0.2);kill_process(pro); //关掉地面标志线检测进程select(); //进入回家子程序选择子程序}while(analog(3)-analog(4)> 3) //向右调整,如果调整较频繁,修改最后的3{motor(0,50);motor(1,-50);}while(analog(4)-analog(3)> 3) //向左调整,同上{motor(0,-50);motor(1,50);}motor(0,40); //直行motor(1,40);}void test() //地面标志线检测子程序{while(1){k=analog(2);if(k<30 II k>150) //30 和150 分别为底部传感器检测到的的标志线和黑地面j=k; //的值,请根据实际测试值适当修改if((j<30) && (n>150)) //如果更改,此处也一并更改{i++;beep();}n=j;}}void select() //回家程序选择子程序{if(i<3) //如果地面标志线条数小于3(即在4号房间)gohome_4(); //进入4号房间回家子程序,下同else if(i<5)gohome_3();else if(i<8)gohome_2();elsegohome_1();}void gohome_4() //4号房间回家子程序{start_process(endstop()); //开启终(起)点停止进程序,下同mg_right(); //右手法则回家stop(); //停止sleep(100.0);}void gohome_3() //3号房间回家子程序{start_process(endstop());mg_left(); //左手法则回家stop();sleep(100.0);}void gohome_2() //2号房间的特殊回家程序{motor(0,60); //灭完火后右转一段motor(1,-60);sleep(0.2);reset_system_time(); //系统时间复位while(mseconds()<2100L) //运行左手法则走迷宫2.1秒(时间长短为可以走出房间门口且不到3号房间的走廊){while(digital(9)==0 II digital(10)==0){motor(0,60);motor(1,-50);}while(digital(15)==0 && digital(9)==1 && digital(10)==1){motor(0,50);motor(1,50);}while(digital(15)==1 && digital(9)==1 && digital(10)==1){motor(0,-80);motor(1,80);motor(0,45);motor(1,80);}}stop();sleep(0.1);while(digital(9)==0) //如果前方有障碍物,右转(调整姿势){motor(0,60);motor(1,-60);}while(digital(9) == 1) //如果前方没有障碍物,左、右手法则并进,基本上直行到另一端(3号房间旁){if(digital(8)==0 ) //右边45度有障碍物,左转{motor(0,-50);motor(1,50);}if(digital(14)==0 && digital(8)==1) //右边有障碍物且右45度角无障碍物,直行{motor(0,50);motor(1,50);}if(digital(10)==0) //左边45度有障碍物,右转{motor(0,50);motor(1,-50);}if(digital(15)==0 && digital(10)==1) //左边有障碍物且左45度角无障碍物,直行{motor(0,50);motor(1,50);}motor(0,50); //直行motor(1,50);}start_process(endstop()); //前方有障碍物时,退出循环,开启终点停止进程while(end) //左手法则走迷宫{if(digital(9)==0 II digital(10)==0){motor(0,60);motor(1,-50);}else if (digital(15)==0 && digital(9)==1 && digital(10)==1){motor(0,70);motor(1,70);}else{motor(0,-80);motor(1,80);motor(0,40);motor(1,100);}}motor(0,-100); //终点刹车motor(1,-100);sleep(0.1);stop(); //停止sleep(100.0);}void gohome_1() //1号房间回家{start_process(endstop()); //开启终点停止进程mg_right(); //右手法则走迷宫stop();sleep(100.0);}void mg_right() //右手法则走迷宫子程序{while(end){if(digital(8)==0 II digital(9)==0){motor(0,-70);motor(1,70);}else if(digital(14)==0 && digital(9)==1 && digital(8)==1) {motor(0,100);motor(1,100);}else{motor(0,100);motor(1,-100);motor(1,20);motor(0,100);}}}void mg_left() //左手法则走迷宫子程序{while(end){if(digital(9)==0 II digital(10)==0 ){motor(0,60);motor(1,-50);}else if(digital(15)==0 && digital(9)==1 && digital(10)==1){motor(0,70);motor(1,70);}else{motor(0,-100);motor(1,100);motor(0,30);motor(1,100);}}}void endstop() //终点停止进程子程序{while(1){k=analog(2); //检测1次sleep(0.02); //间隔0.02秒,再检测//可适当缩短或延长时间if(k<50 && analog(2)<50) //如果2次都是白色,终点到,停止{end=0;stop();sleep(1.0);}}}//全部程序结束#include <iom48v.h>#include <macros.h>#define motion_time1 4 #define motion_time2 6#define time1 100 //转弯时间#define time2 200 //直行时间#define adjusttime 10 //灭火中,姿势调整时,动作时间#define checktime 5 //在传感器检测当中,设置的容错时间//设定灭火时间//设定重复灭火次数#define delay_time1 10#define delay_time2 20#define fire_time 100 //设定灭火时间#define fire_times 3 //设定重复灭火次数unsigned int size=0;unsigned int i=0;unsigned int j=0;unsigned int h=0;unsigned int g=0;unsigned int k=0;unsigned int cny_times ;unsigned int cny_in;unsigned int cny_in1;unsigned int cny_in2;unsigned int cny_in3;unsigned int cny_in4;unsigned int cny_delayms =0;unsigned int workstate=1; //工作状态可作为检测是否进入灭火等unsigned int cny=0;void port_init(void){PORTB = 0x00;//DDRB = 0xFF;PORTC = 0xFF; //m103 output only DDRC = 0x00;PORTD = 0x0F;DDRD = 0xF0;} //呼叫这一个常式设定所有的外围设备初值void init_devices(void){//停止周游的中断直到再设置CLI(); //使所有的中断失去能力port_init();MCUCR = 0x00;EICRA = 0x00; //extended ext intsEIMSK = 0x00;TIMSK0 = 0x00; //timer 0 interrupt sources TIMSK1 = 0x00; //timer 1 interrupt sources TIMSK2 = 0x00; //timer 2 interrupt sourcesPCMSK0 = 0x00; //pin change mask 0 PCMSK1 = 0x00; //pin change mask 1 PCMSK2 = 0x00; //pin change mask 2 PCICR = 0x00; //pin change enablePRR = 0x00; //开关控制//SEI(); //re-enable interrupts//所有的外围设备现在被设定初值}/*前行*/void forward(void){PORTD = 0X60;//0110 0000}/*停止*/void stop(void){PORTD = 0X00;}void turn_right_s(void)//右转{PORTD = 0x20; //右转//0010 0000}void turn_left_s(void)//左转{PORTD = 0x40; //左转//0100 0000}void turn_right(void) //右转{PORTD = 0xa0; //右转//1010 0000}void turn_left(void) //左转{PORTD = 0x50; //左转//0101 0000}void backward(void)//后退{PORTD = 0x90; //后退//1001 0000}/************************声控启动程序运行************************/ void mic_startup(void){unsigned int mic_in;while(1){ //无键按下等待mic_in=PINC & 0x20; //pc5=0有声音if(mic_in== 0)break;}}// 微秒级延时程序void delay_us(unsigned int time){do{time--;}while (time>1);}/* 毫秒级延时程序*/void delay_ms(unsigned int time){while(time!=0){delay_us(1000);time--;}}//*传感器检测程序*//void check (){cny_in1=PINC & 0x03; //0000 0011cny_in2=PINC & 0x08; //00001000cny_in3=PINC & 0x11; //0001 0001cny_in4=PINC & 0x10; //0001 0000}void hd1(void){ while(cny_in1 == 0x01||cny_in1 == 0x00||cny_in1 == 0x02){if (cny_in3==0x01)j++;}}void hd2(void){ while(cny!=0){if (cny_in3==0x01)h++;}}/************************找房程序传感器:PC3:前避障、左避障,接在一起************************/void houseseek_module1()//此处是巡房程序,一般调试的时候要修改此处的延时时间//{while(1){ check ();if(cny_in2==0x00) //检测到左边或前边障碍物,右转{turn_right();delay_ms(4);stop();delay_ms(2);}if(cny_in2 == 0x08) //0000 1000小车偏离墙角,前方没有障碍物,可以采取左转的动作{turn_left();delay_ms(5);stop();delay_ms(4);forward();delay_ms(10);stop();delay_ms(4);}if(cny_in1 == 0x01||cny_in1 == 0x00||cny_in1 == 0x02) // 发现火焰,跳出break;}// seek_fire();}/************************回家************************/void cejia (void){check();if(cny_in4==0x00)//改过{forward();delay_ms(80);check();if(cny_in3==0x00){while(1){stop();}}}}void huijia(void)//{while(1){ check ();if(cny_in2==0x00) //检测到左边或前边障碍物,右转{turn_right();delay_ms(10);stop();delay_ms(2);}if(cny_in2 == 0x08) //0000 1000小车偏离墙角,前方没有障碍物,可以采取左转的动作{turn_left();delay_ms(5);stop();delay_ms(4);forward();delay_ms(10);stop();delay_ms(4);}if(cny_in2 == 0x08&&cny_in4== 0x00) {cejia();}}}/************************灭火程序传感器:pc0 pc1:左右火焰传感器pc4:灰度PB0:风扇************************/void fire(void){ stop();while(1){cny++; //设定标记如果灭火超过一定的次数,表明有错误。

相关文档
最新文档