C51单片机应用与C语言程序设计(第4版)-基于机器人工程对象的项目实践 课件 ch04 C51接口与触觉导航_第1页
C51单片机应用与C语言程序设计(第4版)-基于机器人工程对象的项目实践 课件 ch04 C51接口与触觉导航_第2页
C51单片机应用与C语言程序设计(第4版)-基于机器人工程对象的项目实践 课件 ch04 C51接口与触觉导航_第3页
C51单片机应用与C语言程序设计(第4版)-基于机器人工程对象的项目实践 课件 ch04 C51接口与触觉导航_第4页
C51单片机应用与C语言程序设计(第4版)-基于机器人工程对象的项目实践 课件 ch04 C51接口与触觉导航_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

第4讲C51接口与触觉导航“十三五”职业教育国家规划教材

工作导向创新实践教材程序设计(第4版)在编程让机器人通过触觉“胡须”导航之前,必须首先安装并测试“胡须”。如图4-1所示,安装机器人触觉“胡须”所需的硬件清单如下。触觉导航与单片机输入接口实际上,当单片机启动或复位时,所有的I/O引脚默认为输入。也就是说,当将“胡须”连接到单片机某个I/O引脚时,该引脚会自动作为输入。任务1安装并测试机器人“胡须”(1)拆掉连接主板到前支架的两颗螺钉。(2)参考图4-2,进行下面的操作。(3)将12mm铜螺柱穿过主板上的圆孔,拧进主板下面的螺柱中,拧紧。(4)将两个螺钉分别穿过M3尼龙垫圈拧进铜螺柱中。任务1安装并测试机器人“胡须”安装“胡须”(5)把须状金属丝的其中一个勾在尼龙垫圈之上,另一个勾在尼龙垫圈之下,调整它们的位置,使它们横向交叉但又不接触。(6)拧紧螺钉到铜螺柱上。(7)参考接线图4-3,搭建胡须电路。安装好触觉“胡须”的机器人如图4-5所示。任务1安装并测试机器人“胡须”测试“胡须”通过编程让单片机探测什么时候“胡须”被触动。由图4-3可知,连接到每个“胡须”电路的I/O引脚监视着10kΩ上拉电阻上的电压变化。当“胡须”没有被触动时,连接胡须的I/O引脚的电压是5V;当胡须被触动时,I/O短接到地,所以I/O引脚的电压是0V。上拉电阻上拉电阻就是与电源相连并起到拉高电平作用的电阻。此电阻还起到限流的作用,如图4-3中的10kQ电阻即为上拉电阻。上面的例程用来测试“胡须”的功能是否正常。任务1安装并测试机器人“胡须”例程:TestWhiskers.c将delay

nus函数的参数n以不同的值组合可以使机器人以其他的方式运行。例如以下程序段:任务1安装并测试机器人“胡须”位操作符位操作符用于对字节或字中的位(bit)进行测试、置位或移位处理,这里的字节或字是针对C语言标准的char和int

数据类型而言的,如图4-1。位操作符if语句在第3讲中学习的switch语句是选择控制语句中的一种,还有一种语句是if语句,它根据给定的条件进行判断,以决定执行某个分支程序段。if语句的使用形式之一为:if(表达式)语句1;else语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2。任务1安装并测试机器人“胡须”C语言提供了一个可以代替某些“if-else”语句的简便易用的操作符“?”。该操作符是三元的,其一般形式为:表达式1?表达式2:表达式3。操作符它的执行过程是:先求解表达式1,如果为真(非0),则求解表达式2,并把表达式2的结果作为整个条件表达式的值;如果表达式1

的值为假(0),则求解表达式3,并把表达

式3的值作为整个条件表达式的值。任务2通过“胡须”导航下面的程序让机器人向前走直到碰到障碍物,然后用它的一根或者两根“胡须”探测障碍物。字符型数据

if-else-if形式,它可以进行多分支选择,其一般形式为:其语义是:依次判断表达式的值,当某个值为真时,则执行其对应的语句,然后跳到整个if语句之外继续执行程序;如果所有的表达式均为假,则执行语句n,然后继续执行后续程序。任务2通过“胡须”导航关系与逻辑运算符“关系”二字指的是一个值与另一个值之间的关系;“逻辑”二字指的是连接关系的方式。因为关系和逻辑运算符常在一起使用,所以将它们放在一起讨论。关系与逻辑运算符概念中的关键是True(真)和Flase(假)。C语言中,非0为True;0为Flase。使用关系与逻辑运算符的表达式对Flase和True分别返回0和1。如表4-2。转义字符:注意赋值运算符“=”与关系运算符“==”的区别:赋值运算符“=”用来给变量赋值;关系运算符“—”用来判断两个值是否是相等的关系。任务2通过“胡须”导航例程:RoamingWithWhiskers.c这个程序示范了一种利用if语句测试“胡须”的输入并决定调用哪个运动子程序的方法。●打开主板和伺服电机的电源;●输入、保存并运行程序RoamingWithWhiskers.c;●尝试让机器人行走,当机器人在其路线上遇到障碍物时,它将后退、旋转至另一个方向。20%30%40%50%如果两根“胡须”都被触动了即P14state()和P23state()都为0,则先调用Backward(),紧接着调用LeftTurn()两次。如果只是右边“胡须”被触动了即只有P14state()==0,则程序先调用Backward(),再调用LeftTurn()。如果两根“胡须”都没有被触动在这种情况下,在else中调用Forward()。任务2通过“胡须”导航“胡须”导航机器人怎样行走如果左边“胡须”被触动了即只有P23state()=0,则程序先调用Backward(),再调用RightTum()。任务3机器人进入死区后的人工智能决策编程逃离墙角死区技巧是记下“胡须”交替触动的总次数。技巧的关键是程序必须记住每个“胡须”的前一次触动状态,并和当前触动状态对比。★首先要检查的是,是否有且只有一根“胡须”被触动。★假如有“胡须”被触动,接下来要做的事情就是检查当前状态是否与上次不同。★如果发现“胡须”连续4次被触动,那么计数器值置1,并且进行“U”形拐弯。★紧接着的else语句对应机器人没有陷入墙角的情况,故将计数器值置1。任务3机器人进入死区后的人工智能决策下面是一个包含if…else嵌套语句的C语言例程,用于探测连续的、交替出现的胡须触动过程。例程:EscapingCorners.cEscapingCorners.c是如何工作的由于该程序是经RoamingWithWhiskers.c修改而来的,下面只讨论与探测和逃离墙角

温馨提示

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

评论

0/150

提交评论