《输入输出接口与红外线导航》由会员分享,可在线阅读,更多相关《输入输出接口与红外线导航(18页珍藏版)》请在金锄头文库上搜索。
1、Slide 1深圳市德普施科技有限公司 SHENZHEN DEPUSH TECHLONOGY CO.,LTDC51输入输出接口与红外线导航第五章DEPUSHC51输入输出接口与红外线导航Slide 2本讲摘要1.搭建并测试IR发射和探测器对2.探测和避开障碍物3.高性能IR导航4.边沿探测DEPUSHC51输入输出接口与红外线导航Slide 3使用红外线发射和接收器件探测道路非接触式导航,探测距离更远输出:红外LED,38.5kHz左右输入:红外接收器DEPUSHC51输入输出接口与红外线导航Slide 4搭建并测试IR发射和探测器对左侧和右侧IR组原理图搭建电路三极管工作在开关状态三极管管脚
2、图DEPUSHC51输入输出接口与红外线导航Slide 5搭建并测试IR发射和探测器对测试电路让每个IR LED探测器组工作的关键是发送1毫秒、频率为38.5kHz的红外信号, 然后立刻将IR探测器的输出存储到一个变量中。 for(counter=0;counter#includeint main(void)int counter;uart_Init();printf(“Program Running!n“);int P1_2state(void)return (P1int irDetectRight;irDetectRight=P3_5state();printf(“irDetectRigh
3、t=%dn“,irDetectRight);int P3_5state(void)return (P3搭建并测试IR发射和探测器对例程:TestLeftIrPair.cwhile(1)for(counter=0;counter#include#include#define LeftIR P1_5 /左边红外接收连接到P15#define RightIR P3_6 /右边红外接收连接到P36#define LeftLaunch P1_4 /左边红外发射连接到P14#define RightLaunch P3_3 /右边红外发射连接到P33int IRLaunch(unsigned char IR
4、) /行走子函数int main(void)bit irDetectLeft,irDetectRight; while(1)IRLaunch(R); irDetectRight = RightIR;/右边接收IRLaunch(L); irDetectLeft = LeftIR;/左边接收 /行为控制,与胡须类似DEPUSHC51输入输出接口与红外线导航Slide 13高性能的IR导航胡须传感器式导航策略:if(irDetectLeft=0)Left_Turn();Left_Turn(); else if(irDetectLeft=0)/只有左边接收到红外线 Backward();Right_T
5、urn(); else if(irDetectRight=0)/只有右边接收到红外线 Backward();Left_Turn(); else Forward();缺点:动作比较迟钝改进:在每个脉冲之间采样DEPUSHC51输入输出接口与红外线导航Slide 14高性能的IR导航例程:FastIrRoaming.c int main(void)doif(irDetectLeft=0)pulseRight=1700;else if(irDetectLeft=0)pulseRight=1700;else if(irDetectLeft=1)pulseRight=1300; else /前进puls
6、eLeft=1700;pulseRight=1300;P1_1=1;delay_nus(pulseLeft); P1_1=0;P1_0=1;delay_nus(pulseRight);P1_0=0;delay_nms(20);while(1);if.else语句设置脉冲持续 时间并非调用导航程序DEPUSHC51输入输出接口与红外线导航Slide 15高性能的IR导航do.while语句当型循环控制语句:while(表达式) 语句;直到型循环控制语句:dowhiledo 语句 while(表达式);语句通常为复合语句,用“ ”括起来,称为循环体。特点:先执行后判断,即循环体至少被执行一次。DE
7、PUSHC51输入输出接口与红外线导航Slide 16边沿俯视探测机器人没有检测到障碍物(irDetectLeft、irDetectRight=1)表示什么?1、畅通无阻2、边沿俯视的探测器模拟桌面边沿DEPUSHC51输入输出接口与红外线导航Slide 17边沿俯视探测例程:AvoidTableEdge.c与FastIrRoaming.c不同之外:1. irDetectLeft或irDetectRight为0时,表明在桌面上;为1时,表明靠近边沿;2.调整两次检测之间的脉冲响应个数,有利于导航。if(irDetectLeft=0)pulseLeft=1700;pulseRight=1300;
8、else if(irDetectLeft=1)pulseLeft=1300;pulseRight=1300;else if(irDetectLeft=0)pulseLeft=1700;pulseRight=1700; else /后退pulseCount=15;pulseLeft=1300; pulseRight=1700;for(i=0;ipulseCount;i+)P1_1=1;delay_nus(pulseLeft);P1_1=0;P1_0=1;delay_nus(pulseRight);P1_0=0;delay_nms(20);DEPUSHC51输入输出接口与红外线导航Slide 18本章小结红外传感器作为输入反馈与单片机的编程实现空函数_nop_()的使用单片机机器周期的计算 C语言#define指令的使用 dowhile循环控制语句的使用高性能红外线导航及边沿探测的实现DEPUSHC51输入输出接口与红外线导航