赞
踩
与TCRT5000循迹模块比较后就会发现,跟随模块的设计和上节的传感器的设计是一样的,只是跟随模块的红外发射和接受口朝前,而上节的传感器朝下。
因此
模块输出端为高电平:当发射出的红外线没有或反射强度不够大时,红外线接收管就会一直处于关断状态,DO输出高电平,指示二级管一直处于熄灭状态。
模块输出端为低电平:而当被检测物体出现再检测范围内导致红外线被反射回来且强度足够大,此时红外接收管饱和,DO输出低电平,指示二级管被点亮。
总结就是: 有物体遮挡小车,反射的强度不够时,DO为高,开关指示灯不亮;反之DO为低,开关指示灯亮
和循迹小车类似,只不过循迹循的是地板上的黑色,而跟随是跟随前方的黑色:
即左边跟随模块能返回红外(输出低电平)且右边模块不能返回红外(输出高电平)时,说明物体在左边,需要左转;
右边跟随模块能返回红外(输出低电平)且左边模块不能返回红外(输出高电平)时,说明物体在右边,需要右转;
接线也和上节一样,这里我选择了左边传感器OUT接P2.4,右边传感器OUT接P2.5:
main.c
- #include "reg52.h"
- #include <intrins.h>
- #include <delay.h>
- #include <motor.h>
-
- sbit Left_Sensor = P2^4;
- sbit Right_Sensor = P2^5;
-
- sbit led2 = P3^6;//根据原理图(电路图),设备变量led2指向P3组IO口的第6口
-
-
- void main()
- {
- while(1)
- {
- //
- // 左边跟随模块能返回红外(人往左偏),输出低电平,右边不能返回,输出高电平,说明物体在左边,需要左转
- // 右边跟随模块能返回红外,输出低电平,左边不能返回,输出高电平,说明物体在右边,需要右转
- if(Left_Sensor == 0 && Right_Sensor == 0)
- {
- Motor_front();//前
- }
- Delay1000ms();
- if(Left_Sensor == 1 && Right_Sensor == 0)
- {
- Motor_Right();//右转
- }
- Delay1000ms();
- if(Left_Sensor == 0 && Right_Sensor == 1)
- {
- Motor_Left();//左转
- }
- Delay1000ms();
- if(Left_Sensor == 1 && Right_Sensor == 1)
- {
- Motor_Stop();
- }
-
- }
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。