用光敏电阻进行导航2简析.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用光敏电阻进行导航(二) 一、实验要求 掌握定时计数器的使用方法,用串口调试的方法测量环境的光线强弱,编写能够实际应用的程序,使得机器人能够在手电筒光束的引导下前进。 在其他的环境中(存在一光源,有明暗的变化)思考并实现机器人向着光源(明亮的区域)移动。 二、实验概要 1.手电筒光束引导宝贝车将测试和校正宝贝车机器人的光传感器使它能够识别环境光和手电筒光束。编程使机器人跟随指向它前方表面的手电筒光束行走。手电筒光束引导宝贝车将测试和校正宝贝车机器人的光传感器使它能够识别环境光和手电筒光束。编程使机器人跟随指向它前方表面的手电筒光束行走。调节传感器寻找手电筒光束 如果光敏电阻的采光面指向宝贝车机器人前面5.1 cm处,本任务会完成的。按如图-4所示,将光敏电阻的采光面调整指向宝贝车机器人前面5.1cm处。 图 -1 光电阻的指向? 输入、保存并运行程序TestBothPhotoresistors.c。 将宝贝车机器人放置在跟随手电筒光源行走的表面上,确保机器人和串口电缆连接可靠,并且测量结果显示在调试终端里。 ? 在表7-1第一行里记录测量的时间值。 ? 打开手电筒,将光束聚焦在机器人前方。 此时测量的时间值应该明显的低于第一次设置的值。在表6-1第二行里记录测量的时间值。 表 7-1 有无手电筒光束的时间测量值 右侧测量值 左侧测量值 描述 没有手电筒光源的时间测量值(环境光) 机器人正前方有手电筒光源的时间测量值 #includeBoeBot.h #includeuart.h int main(void) { unsigned int count;//机器人正前方有手电筒光源的时间测量值 unsigned int timeLeft,timeRight; uart_Init(); while(1) { TH0=TL0=0; TMOD=TMOD|0x01; P1_5=0; delay_nms(300); P1_5=1; TR0=1; while((P10x20)==0); count=TH0; count=count8; count=count+TL0; timeLeft=count; TR0=0 //把定时器关掉 TH0=TL0=0; TMOD=TMOD|0x01; P2_3=0; delay_nms(300); P2_3=1; TR0=1; while((P20x08)==0); count=TH0; count=count8; count=count+TL0; timeRight=count; TR0=0 //把定时器关掉 printf(L %d us\n,timeLeft); printf(R %d us\n,timeRight); delay_nms(50); } } 试着让机器人面朝不同的方向,重复上述的测量。 要取得更好的结果,你可以将有无手电筒光束所测得的结果取平均值,替代表7-1的结果。 3)跟随手电筒光束 如果你计划在程序中使用一个常数,你可以给它一个有用的名字。用define来定义常量, 这是下面例程中的要用到的一些常量: #define LeftAmbient 944 #define RightAmbient 950 #define LeftBright 923 #define RightBright 923 现在,程序在任何地方使用LeftAmbient,微控制器将会使用944代替,使用RightAmbient,微控制器就会使用950,同样的,无论LeftBright出现在程序的任何地方,它的实际值是923,RightBright 的实际值是923。在实际运行程序之前,你必须用表7-1测得的值代替上述值。 常量也可被用来计算其它的常量。这里是有关两个常量的例子,它们是 LeftThreshold 和RightThreshold,是由刚才所说的四个常量计算而来的。LeftThreshold 和 RightThreshold 在程序中用来计算出手电筒光束是否被探测到。 #define LeftThreshold (LeftBright+LeftAmbient)/2 #define RightThreshold (RightBright+RightAmbient)/2

文档评论(0)

妈妈王子 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档