1. 循迹小车基本原理和方案(269.114)
循迹模块使用
- TCRT5000传感器的红外发射二极管不断发射红外线:
- 当发射出的红外线 没有 被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的输出端为 高电平,指示二极管一直处于 熄灭状态;
- 被检测物体出现 在检测范围内 时,红外线 被反射回来 且强度足够大,红外接收管饱和,此时模块的输出端为 低电平,指示二极管 被点亮
- 总结:没反射回来,D0输出高电平,灭灯
- 接线方式
- VCC:接电源正极(3 - 5V)
- GND:接电源负极
- DO: TTL开关信号输出 0、1
- AO: 模拟信号输出(不同距离输出不同的电压,此脚一般可以不接)
循迹小车原理
- 由于黑色具有较强的吸收能力,当循迹模块发射的红外线 照射到黑线时,红外线将会 被黑线吸收,导致循迹模块上光敏三极管 处于关闭状态,此时模块上 一个 LED 熄灭;
- 在 没有检测到 黑线时,模块上 两个 LED 常亮
- 总结:有感应到黑线,D0输出高电平,灭灯
- 循迹模块安装在小车车头两侧:
- 下方小车两个模块都能 反射回来红外,输出 低电平,灯亮,直走
- 上方小车左模块遇到黑线,红外被吸收,左模块输出 高电平且左灯灭,右模块输出 低电平且右灯亮,左转,反之右转
2. 根据循迹原理实现循迹功能代码编写(270.115)
- 代码(20./07. 循迹小车实现)(不调速方式写代码)
#include "motor.h"
#include "delay.h"
#include "reg52.h"
sbit leftSensor = P2^7;
sbit rightSensor = P2^6;
void main(){
//下方小车两个模块都能反射回来红外,输出低电平,灯亮,直走
//上方小车左模块遇到黑线,红外被吸收,左模块输出高电平且左灯灭,右模块输出低电平且右灯亮,左转,反之右转
while(1){
if(leftSensor == 0 && rightSensor == 0){
//左右都反射回来,都低电平,直走,灯都亮
goForward();
}
if(leftSensor == 1 && rightSensor == 0){
//左边没反射回来,左高电平,左转,右灯亮
goLeft();
}
if(leftSensor == 0 && rightSensor == 1){
//右边没反射回来,右高电平,右转,左灯亮
goRight();
}
if(leftSensor == 1 && rightSensor == 1){
//左右都没反射回来,都高电平,停,灯都不亮
stop();
}
}
}
3. 循迹实际测试和电位器调节(271.116)
4. 解决转弯干滑问题,加入电机调速
#include "motor.h"
#include "delay.h"
#include "uart.h"
#include "timer.h"
#include "reg52.h"
sbit leftSensor = P2^7;
sbit rightSensor = P2^6;
extern char speedLeft;
extern char speedRight;
void main(){
Timer0Init();
Timer1Init();