单片机输入输出接口与红外导航
单片机I/O口的红外遥控软件调制技术

议 已多 达 1 0种 , R 、 I 如 C5 S RCS S 、 ONY、 REC 8 、 S 0
S a p NE M oo oa J h r 、 C、 tr l、 VC、 AM S NG 和 Dawo S W e o
C mma d l d e s o e l Da d IC e kS o n Ad rs d c t c e h e UM ao
N C的 协 议 使 用 的 位 脉 冲 距 离 编 码 。 每 个 脉 冲 是 E
5 0 s 3 Hz的载 波 爆 裂 ( 2 6 、 8k 约 1个 周 期 ) 一 个 逻 辑 1 。
17 P Bl C1 p 伊、 M2 A Ⅳ
PB4 I /SCL PB5I DA+ /S P / CL B6DS PB7DS / DA‘ P C0 BO 1 P / W M 9 9 A7P P /W M8 A6 P 率 21 A5P M 7 P / W
和 上 位 机 ( C机 ) R 2 2通 信 , 收 要 发 送 的 红 外 遥 P 的 S3 接
2 软 件 调 制 设 计
2 1 红 外 遥 控 调 制 结构 分 析 .
红 外 遥 控 器 编 码 传 输 协 议 N C码 的 主要 特 征 是 8位 E 地 址 和 8位 指 令 ; 址 和 命 令 2次 传 输 ( 保 可 靠 性 ) 地 确 ; P WM 脉 冲位 置 调 制 , 发 射 红 外 载 波 的 占空 比代 表 “ ” 以 0 和
- .
等 。一 般 的 红 外遥 控 器 编 码 调 制 方 式 采 用 遥 控 专 用
单片机红外线遥控器输入系统研究

单片机红外线遥控器输入系统研究赵思成郭娜(哈尔滨职业技术学院信息工程系电子信息教研室黑龙江哈尔滨150000)中围分类号:T P7文献标识码:^文章编号:167卜7597(2009)O”0026—01随着单片机嵌入式应用系统和红外线遥控技术的发展,越来越多的红外遥控器械在单片机系统中来代替键盘进行输入工作。
在工控设备中,传统的方法是用专用的红外发射和接收电路来实现的。
这种设计方法要考虑到震荡载频的产生。
接收的自动增益控制(A G c)等,使得在设计、制作和调试上非常繁琐,容易产生相互干扰。
如果采用现在广泛使用的普通遥控器加上一体化接收头作为单片机的输入系统,就可以有效地克服上述缺点。
一、红外遥控系统原理红外遥控的发射电路是采用红外发光二极管来发出经过调制的红外光波;红外接收电路由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射雕红外光转换为相应的电信号,再送后置放大器。
发射机一般由指令键(或操作杆)、指令编码系统、调制电路、驱动电路、发射电路等几部分组成。
当按下指令键或推动操作杆时,指令编码电路产生所需的指令编码信号,指令编码信号对载体进彳亍调制,再由驱动电路进行功率放大后由发射电路向外发射经调制定指令编码信号。
接收电路一般由接收电路、放大电路、调制电路、指令译码电路、驱动电路、执行电路(机构)等几部分组成。
接收电路将发射器发出的已调制的编码指令信号接收下来,并进行放大后送解调电路,解调电路将己调制的指令编码信号解调出来,即还原为编码信号。
二、■码格式L c746l M型遥控发射芯片采用PwM方法来发送信号。
当按F某个键后,就会发出一组长108m s的编码。
它由引导码、13位用户识别码、13位用户识别反码、8位操作码和8位操作反码组成,共计42位信息。
其中引导码由9l I l s的高电平和4.5m s的低电平组成。
因为在各种光电干扰中干扰信号都是以尖脉冲形式出现的,持续时间很短(一般都在7m s以内),当接收到13.5m s的引导码后,接着接收到的信号就可以认为是发射的数据信号。
机器人实训建设方案

机器人实训建设方案建设机器人创新实训室的意义随着社会对人才需求的发展,教学方式也需要提供更多系统的工程应用训练和工程创新训练。
同时,我们也渴望探索新的教学方法,开发新的课程体系,以培养高素质、强实践能力、受企业欢迎的毕业生。
在探索新的教学方法和课程体系时,我们考虑寻找一个能进行综合系统的创新实践的平台。
机器人是非常典型的机电一体化系统,它融合了机械、电子、传感器、计算机软硬件、控制、人工智能和造型技术等众多的先进技术,是高等学校开展工程训练、教学实验、课外创新活动和科研最为理想的平台。
机器人创新实训室的建设可以为学生和教师提供一个综合的创育平台和教学研究平台。
通过引导学生进行单片机和微控制器、数字电子和模拟电子、数字逻辑、检测技术与传感器、工业控制、机器人学等课程的研究和实践,采用系统的方法对实验教学内容、方法和手段进行创新,使学生既能了解基本原理,又能了解实际的测控方法和对象,理论联系实际,科学主导工程。
这样可以提高学生的创新能力和动手能力,提升整个专业的教学水平,广泛性的激发研究者的兴趣和激情。
同时,机器人创新实训室还可以为学校参加XXX机器人电视大赛和中国机器人大赛等提供硬件和软件支持,使学生能够广泛适用于机电一体化、电气工程、自动化工程等方向的就业需求,同时满足高校专业教学实验和科学研究的要求。
实训室建设总体目的机器人创新实训基地的建设是为了达到如下目的:1.达到教育部提出的“高等教育要重视培养大学生创新能力、实践能力和创业精神”的创育的要求。
2.与一流大学办学模式接轨,从单纯传授知识向培养学生发现问题的能力、获取知识的能力、创新与创业的能力转变。
3.与国际先进教学方法接轨,提倡参与式教学、体验式研究,将转变为培养学生工程实践和创新能力的重要实验室。
总的来说,机器人创新实训基地的建设是为了为机电工程、自动化工程、信息工程、电气工程和系统工程等主要工程专业的学生提供一个以机器人为实验对象的创新基地。
单片机中的输入输出接口技术讲解

单片机中的输入输出接口技术讲解单片机(Microcontroller Unit,简称MCU)作为一种集成了微处理器核心、内存、输入输出接口和外部设备接口的集成电路,广泛应用于各种嵌入式系统中。
其中,输入输出接口技术是单片机的核心组成部分之一,它能够实现单片机与外部设备的高效通信和数据交换。
本文将就单片机中的输入输出接口技术进行详细讲解。
一、基本概念输入输出接口(Input/Output Interface,简称I/O Interface)是单片机与外设之间传输数据、信号的桥梁。
它负责转换单片机内部的电信号与外部设备的电信号之间的逻辑和电平转换。
在单片机应用中,常见的外部设备包括按键、LED灯、LCD显示屏、步进电机等。
二、数字输入输出接口1. 数字输入接口数字输入接口主要通过端口的工作方式与外设通信,常见的数字输入接口有通用并行接口(General Purpose Parallel Interface,简称GPIO)和外部中断(External Interrupt)。
GPIO是单片机中最常见的通用输入输出接口,它具有多种工作模式,可以通过软件控制单片机与外设之间的数据传输。
GPIO的主要功能是将单片机的高低电平与外部设备的高低电平进行转换。
通过控制GPIO的输入输出状态,可以实现与外设之间的数据交换和通信。
外部中断是一种特殊的输入接口,它能够实现对外部事件的高效响应。
当外部事件触发时,单片机会立即跳转到相应的中断服务程序进行处理。
外部中断常用于读取按键输入、检测传感器状态等场合。
2. 数字输出接口数字输出接口是单片机将数据传输出给外部设备的接口。
常见的数字输出接口有通用并行接口(GPIO)、定时器(Timer)和比较器(Comparator)。
GPIO作为通用输入输出接口,在数字输出方面同样起到重要作用。
通过控制GPIO的输出状态,单片机可以向外设发送数据、控制外设的开关状态等。
定时器是一种重要的数字输出接口。
单片机的输入输出设备接口

单片机的输入输出设备接口1. 简介在嵌入式系统开发中,单片机是最常用的核心处理器之一。
单片机通过输入输出设备接口与外部设备进行通信,实现数据的输入和输出。
本文将介绍常见的单片机输入输出设备接口,包括数字输入输出口、模拟输入输出口、串行通信接口等。
2. 数字输入输出口(GPIO)数字输入输出口(General Purpose Input Output,简称GPIO)是一种常见的单片机输入输出设备接口。
它可以通过程序控制对内部资源的输入和输出。
单片机的GPIO包括多个引脚,每个引脚可以作为输入口或输出口使用。
在使用过程中,我们可以通过将引脚设置为输入模式或输出模式,并通过编程对引脚进行读写操作。
2.1. 输入模式在输入模式下,GPIO可以用作输入接口,接收外部设备的信号。
在单片机中,通常使用输入状态寄存器(Input Status Register)来存储外部信号的状态。
当外部设备产生一个高或低电平信号时,单片机可以通过读取输入状态寄存器来获取该信号的状态。
2.2. 输出模式在输出模式下,GPIO可以用作输出接口,控制外部设备的状态。
在单片机中,通常使用输出数据寄存器(Output Data Register)来存储输出数据。
通过向输出数据寄存器写入高或低电平信号,单片机可以控制外部设备的状态。
3. 模拟输入输出口(ADC和DAC)除了数字输入输出口,单片机还可以提供模拟输入输出口。
模拟输入输出口分为模拟数字转换器(ADC)和数字模拟转换器(DAC)两种。
3.1. 模拟数字转换器(ADC)模拟数字转换器(Analog-to-Digital Converter,简称ADC)可以将模拟信号转换为数字信号。
通过电压分压、采样等方法,单片机的ADC模块可以将外部模拟信号转换为数字量,供单片机进行处理和分析。
3.2. 数字模拟转换器(DAC)数字模拟转换器(Digital-to-Analog Converter,简称DAC)可以将数字信号转换为模拟信号。
单片机中的模拟输入输出接口设计与应用

单片机中的模拟输入输出接口设计与应用概述单片机是一种集成了处理器、存储器和各种外设功能的集成电路,广泛应用于嵌入式系统中。
在实际应用中,模拟输入输出(Analog Input/Output,简称为AI/AO)是单片机常用的功能之一。
模拟输入输出接口用于将模拟信号转换为数字信号或将数字信号转换为模拟信号,从而实现单片机与外部模拟设备的互联。
本文将介绍单片机中的模拟输入输出接口的设计与应用。
一、模拟输入输出的作用与特点1. 作用:模拟输入输出接口可将模拟量与单片机进行连接,实现模拟量信号的输入和输出,为系统提供更精确的数据。
2. 特点:- 模拟输入输出接口可以实现模拟信号与数字信号之间的转换。
- 模拟输入输出接口通常采用模数转换器(ADC)和数模转换器(DAC)实现模拟信号的采样和重构。
- 模拟输入输出接口的精度和分辨率直接影响系统的测量和控制精度。
二、模拟输入与数字输出接口的设计与应用1. 模拟输入接口设计与应用模拟输入接口常使用模数转换器(ADC)实现。
ADC将外部模拟信号转换为相应的数字信号,单片机可以通过读取数字信号来获取模拟输入量的值。
以下是模拟输入接口的设计与应用步骤:(1)选择合适的ADC型号:根据系统需求,选择合适的ADC型号。
选型时要考虑采样率、分辨率、电平范围和功耗等因素。
(2)接线:将模拟信号与ADC输入引脚相连。
通常,需要使用模拟信号调理电路(如信号调理电路和滤波器)来满足输入要求。
(3)配置寄存器:根据单片机的技术手册,配置ADC寄存器,设置采样频率、参考电压、输入通道等参数。
(4)采样和转换:通过编程,触发ADC进行采样和转换。
读取ADC结果寄存器,获取模拟输入量的数值。
(5)数据处理与应用:根据需要,对获取的模拟输入量进行进一步处理,如信号滤波、数据补偿等。
可以将模拟输入量用于系统的测量、控制、报警等功能。
2. 数字输入与模拟输出接口的设计与应用数字输入与模拟输出接口通常使用数模转换器(DAC)来实现。
单片机的输入与输出接口实现方法

单片机的输入与输出接口实现方法单片机是一种具有微处理器核心、存储器和外设接口的集成电路芯片。
它被广泛应用于各个领域,如家电、汽车、通信等。
在单片机应用中,输入与输出接口的实现是非常重要且常见的一项任务。
本文将介绍几种常用的单片机输入与输出接口实现方法,并进行详细讲解。
1. 数字输入输出接口(GPIO)数字输入输出接口是最基本也是最常用的单片机输入输出接口。
它通过单片机的通用引脚(GPIO引脚)来实现信号的输入和输出。
GPIO引脚可以配置为输入状态或输出状态,通过设置引脚电平的高低实现不同的功能。
在单片机编程中,可以使用特定的寄存器或库函数来控制GPIO引脚的状态。
例如,对于51单片机,可以使用P0、P1等寄存器来控制GPIO引脚的状态。
通过设置相应的位,可以配置引脚为输入或输出状态,并通过读取或写入相应的位来实现信号的输入或输出。
2. 模拟输入输出接口(ADC和DAC)模拟输入输出接口主要用于处理模拟信号。
模拟输入接口(ADC)将外部模拟信号转换成数字信号,以供单片机处理。
而模拟输出接口(DAC)将数字信号转换成模拟信号,以供外部电路使用。
在单片机中,ADC和DAC一般都是通过专用的模块来实现。
通过配置相应的寄存器和使用相应的库函数,可以设置ADC和DAC的参数,如采样率、精度等。
在编写程序时,可以通过读取ADC的值来获取模拟输入信号,并通过写入DAC的值来输出模拟信号。
3. 串口输入输出接口(USART)串口输入输出接口是单片机与外部设备之间常用的一种通信方式。
通过串口接口,可以实现单片机与计算机、传感器、显示器等设备的通信。
单片机中的串口通常采用USART模块来实现。
通过配置相关的寄存器和使用相应的库函数,可以设置串口的通信参数,如波特率、数据位数、停止位数等。
通过发送和接收数据来实现与外部设备的通信。
4. 存储器接口(EEPROM、Flash)存储器接口用于单片机与外部存储设备的数据交换。
单片机在智能安防监控系统中的应用技术

单片机在智能安防监控系统中的应用技术引言:随着科技的不断发展和进步,智能安防监控系统在各行各业得到了广泛的应用,为人们的生活和工作带来了便利和安全保障。
其中,单片机作为核心控制器,发挥着至关重要的作用。
本文将探讨单片机在智能安防监控系统中的应用技术。
1. 单片机简介单片机(Microcontroller)是一种集成电路,包含了中央处理器(CPU)、存储器(ROM、RAM)以及各种输入输出接口。
它具有体积小、功耗低、成本低廉等特点,适合嵌入式系统应用。
在智能安防监控系统中,单片机承担着控制和处理传感器数据的重要任务。
2. 传感器与单片机的连接智能安防监控系统中使用了多种传感器,如红外传感器、光电传感器、声音传感器等,用于感知环境的实时信息。
单片机通过与传感器的连接,可以读取和处理这些传感器提供的数据,实现对环境的感知和控制。
3. 数据采集与处理单片机通过与传感器的连接,可以实时采集环境数据。
例如,当红外传感器检测到有人靠近时,单片机可以读取红外传感器输出的信号,并判断是否需要触发警报或进行其他相应的操作。
同时,单片机还可以通过对采集到的数据进行处理和分析,提取关键信息,为后续的决策提供支持。
4. 实时监控与控制单片机在智能安防监控系统中扮演着实时监控和控制的角色。
通过与摄像头等设备的连接,单片机可以接收到实时的监控视频信号,并实时处理和分析这些视频数据。
单片机通过图像识别、运动检测等算法,可以实现对异常情况的检测,如人员闯入、火灾等,从而及时发出警报或采取相应的控制措施。
5. 系统灵活性与可扩展性单片机的设计和应用具有很高的灵活性和可扩展性。
通过对单片机程序的编写和修改,可以实现对智能安防监控系统的功能和行为进行定制化。
同时,单片机的输入输出接口多样化,可以方便地与其他设备进行连接和交互,实现系统的功能扩展和升级。
6. 能耗管理与节能技术智能安防监控系统通常需要24小时不间断工作,对于单片机的能耗管理提出了更高的要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机输入/输出接口与红外导航一、实验要求了解红外传感器的工作原理,动手搭建红外电路,能够探测和避开障碍物;改进程序,实现更可靠的壁障功能,可以尝试避开“悬崖”或者循线的功能;对试验中出现的问题或现象进行总结,给出解释。
二、实验概要1.搭建并测试IR发射和探测器对了解红外发射与接收器的工作原理,搭建合适的电路,编写程序,对IR发射与探测器进行测试。
2.探测和避开障碍物IR检测器没有检测到红外光时输出为高电平,这与触须的作用很类似。
那么,可以利用红外光的反射,检测有没有从障碍物反射回来的光线,就可以判断前方有无障碍物。
修改触须导航的程序,实现以上功能,要求能够检测到一定范围内的较大的障碍物,并避开。
3.高性能的IR导航红外干扰测试,以及探测距离调整;适当的修改程序,使小车行走过程更加流畅。
4.俯视的探测器可以做什么事情原理同上,俯视的探测器可以探测前下方或者下方有无物体,这怎么用?可以反着用——我要探测“没有物体”这种情况。
比如,小车在桌子边缘,为了不掉下去,就需要这做。
实验中用黑色绝缘带模拟这一种情况。
小车检测到绝缘带即表示到了桌子边缘,然后应该后退,以避免掉下去。
三、实验内容如今最热门的产品看起来都有一个共性:无线通信。
比如私人用户可以把数据无线传输到便携电脑,我们可以通过遥控自由选择频道。
许多远程控制和PDA使用频率低于可见光的红外线进行信号通信。
使用一些便宜且应用广泛的部件,MCS-51微控制器也可以收发红外光信号。
使用红外线前灯探测道路不接触探测物体并不需要任何就像机器视觉那样复杂的东西。
许多机器人使用雷达(RADAR)或者声纳(SONAR)。
一个更简单的系统是使用红外光来照射机器人的路线,然后确定何时有光线从目标反射回来。
由于红外远程控制技术的发展,红外线发射器和探测器已经很普及并且价格便宜。
红外前灯我们在宝贝车机器人上建立的红外物体探测系统在许多方面就像汽车的前灯。
当汽车前灯的射出的光从障碍物体反射回来时,你的眼睛发现障碍物体,然后你的大脑处理这些信息,并据此控制你的身体引导汽车。
宝贝车机器人使用红外线两极管LED作为前灯,如图8-1所示。
他们发射红外光,在一些情况下,红外线从物体反射从机器人前进的方向折回。
宝贝车机器人的眼睛是红外检测器。
红外检测器发出信号来表明它们是否检测图8-1 用红外光探测障碍物到从物体反射回的红外线。
宝贝车机器人的大脑,MCS-51微控制器据此做出判断并基于这个传感器的输入控制伺服IR检测器电机。
IR(红外线)检测器有内置的光滤波器,除了需要IR LED我们用它的内部的光敏二极管传感器检测的980 nm红外线,它几乎不允许其它光通过。
红外检测器也有一个电子滤波器,它只允许大约38.5 kHz的信号通过。
换句话说,检测器只寻找每秒闪烁38,500次的红外光。
这就防止了普通光源像太阳光和室内光对IR的干涉。
太阳光是直流干涉(0Hz),室内光依赖于所在区域的主电源,闪烁IR LED 套管频率接近100或120 Hz。
由于120 Hz在电子滤波器的38.5 kHz通带频率之外,它完全被IR探测器忽略。
1.搭建并测试IR发射和探测器对图8-2 本节需要的新部件本实验中,你将搭建并测试红外线发射和检测器对。
元件清单:(1) 两个红外检测器(2) 两个IR LEDs(3) 两对IR LED套管(4) 两个220 Ω电阻(红-红-棕)(5) 两个1 kΩ电阻(棕-黑-红)搭建红外线前灯如图8−3所示,将红外LED插入套管。
图8−3 将红外LED 插入套管确保LED摁入到大的套管中。
将小的套管套在LED上,并摁进大的圈里面。
电路板的每个角安装一个IR组(IR LED和检测器)。
图7-4所示是接线图。
断开主板和伺服系统的电源。
建立图8-4所示的电路,参考图7-4接线。
图8-4 左侧和右侧IR 组1)测试红外发射探测器本任务中,你要用P1_4发送持续1秒的38.5kHz的红外光,如果红外光被小车路径上的物体反射回来,红外检测器将给微控制器发送一个信号,让它知道已经检测到反射回的红外光。
让每个IR LED探测器组工作的关键是发送1 ms 频率为38.5 kHz的红外信号,然后,立刻将IR探测器的输出存储到一个变量中。
下面是一个例子,它发送38.5 kHz信号给连接到P1_4的IR发射器,然后用位变量irDetectLeft存储连接到P15的IR探测器的输出。
for( counter=0;counter< 38;counter++){P1_3=1;delay_nus(13);P1_3=0;delay_nus(13);}irDetectLeft=P1_5state();当没有IR信号返回时,探测器的输出状态为高。
当它探测到被物体反射的38500 Hz和声时,它的输出为低。
当发送红外信号后,IR探测器的输出处于低状态不到1毫秒,因此当发送完后立即将IR探测器的输出存储到变量中是很重要的。
这些存储的值会显示在调试终端或被机器人用来导航。
例程: TestLeftIrPair.c打开主板的电源。
输入、保存并运行程序TestLeftIrPair.c。
#include<BoeBot.h>#include<uart.h>int P1_6tate(void){return (P1&0x40)?1:0;}int main(void){int irDetectLeft;uart_Init();printf("Program Running!");for( counter=1;counter<=1000;counter++)//开始/复位信号{P1_3=1;delay_nus(1000);P1_3=0;delay_nus(1000);}while(1){for( counter=0;counter< 38;counter++){P1_5=1;delay_nus(13);P1_5=0;delay_nus(13);}irDetectLeft=P1_6state();printf("irDetectLeft=%d\n",irDetectLeft);delay_nms(100);}}保持宝贝车机器人与串口电缆的连接,因为你将用调式终端来测试你的IR组。
放一个物体,比如手或一张纸,距离左侧IR组大约1英寸,参考图8-1。
验证当你放一个物体在IR组前时,调试终端是否会显示0,当你将物体移开时,它是否显示1。
如果调试终端显示的是预料的值,没发现物体显示1,发现物体显示0,你可以测试另一对红外。
如果调试终端显示的不是预料的值,试试排错部分里的步骤进行排错。
Tips:排错如果调试终端显示的不是预料的值,检查电路和输入的程序。
如果你总是得到0,甚至当没有物体在宝贝车前面时也是0,可能是附近的物体反射了红外线。
宝贝车前面的桌面是常见的始作俑者。
移动小车,使IR LED和探测器不可能受附近物体的影响。
如果宝贝车前面没有物体时绝大多数时间读数是1,但是偶尔是0,这可能是附近的荧光灯的干扰。
关掉附近的荧光灯,重新测试2)函数延时的不精确性如果你有数字示波器,或许到这里你已经注意到P1_4产生的方波的频率并不是125.5K,也就是说延时13us并不是真的延时了13us,而是更长。
这是为什么么呢,主要是由于函数调用过程产生了延时。
函数调用时,CPU会先进行一系列的堆栈操作,这些操作时需要时间的,至少几个us,而我们现在延时也是us级,这就造成了延时的不精确性。
怎么办呢,有没有更精确的方法呢?这里介绍一种常用的延时方法,这在实际工程中用的非常广泛:for(i=0;i<1;i++) { ;}这是一个for空操作语句,它什么也不做,但能产生延时。
我们可以用示波器测量,它能产生约12us延时。
for(i=0;i<2;i++) { ; } //延时25usfor(i=0;i<125;i++){ ; } // 延时1ms左右还有很多方法,比如使用中断,汇编等等,不过实现这个功能,不推荐使用中断,太浪费了,而且不理想。
因为假设用中断延时的话,在延时过程中,CPU什么也做不了。
中断通常用在实时操作RTOS (Real-Time Operating System)系统中。
3)右红外测试将程序TestLeftIrPair.c另存为TestRightIrPair.c。
更改名称和注释使适合于右侧IR组。
(即把注释for语句变成程序,而delay()变为注释)还有其他一些变量需要修改,自己找出来。
2.探测和避开障碍物有关IR检测器的一个有趣的事是它们的输出与触须的输出非常相象。
没有检测到物体时,输出为高,检测到物体时,输出为低。
本任务中,更改程序RoamingWithWhiskers.c使它适用于IR检测器。
下一个例子程序开始于RoamingWithWhiskers.c。
更改旁边的名称和描述,加入两个位变量来存储IR 检测器的状态。
int irDetectLeftint irDetectRight调用一个函数IRLaunch()来读IR组的状态。
int IRLaunch(unsigned char IR){unsigned int counter;if(IR=='L')for(counter=0;counter<1000;counter++){LeftLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();LeftLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}elsefor(counter=0;counter<1000;counter++)//右边发射{RightLaunch=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();RightLaunch=0;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}修改if…else语句检查存储IR检测信息的变量。
if((irDetectLeft==0)&&(irDetectRight==0))//两边同时接收到红外线{Backward();Left_Turn();Left_Turn();}else if(irDetectLeft==0)//只有左边接收到红外线{Backward();Right_Turn();}else if(irDetectRight==0)//只有右边接收到红外线{Backward();Left_Turn();}elseForward();例程――RoamingWithIr.c打开程序RoamingWithWhiskers.c。