第03课 巡线传感器#

(1)项目介绍:#

循迹传感器实际上是红外传感器。 此处使用的组件是TCRT5000红外管。

其工作原理是利用红外光对颜色的不同反射率,然后将反射信号的强度转换为电流信号。

在检测过程中,黑色在高电平时处于活动状态,而白色在低电平时处于活动状态。 检测高度为0-3厘米。

KEYES三路循迹模块在一块板上集成了三个TCRT5000红外管,接线和控制更加方便。

通过旋转传感器上的可调电位器,可以调节传感器的检测灵敏度。

(2)参数:#

工作电压:3.3-5V(DC)

接口:5PIN

输出信号:数字信号

检测高度:0-3厘米

特别说明:在测试之前,请旋转传感器上的电位器以调整检测灵敏度。 当将LED调整在ON和OFF之间的阈值时,灵敏度是最好的。

(3) 项目组件:#

Keyes Uno Plus 开发板 红色环保*1

Keyes brick L298P 电机驱动扩展板 V1*1

keyes 草帽LED白发红模块*1

Keyes connectors 循迹传感器*1

../../../_images/image315.png

../../../_images/image410.png

../../../_images/image54.png

../../../_images/image65.png

XH2.54转PH2.0 5P 连接线*1

3Pin 双母头杜邦线*1

USB线*1

18650双节电池盒*1
(电池 *2自配)

../../../_images/image85.png

../../../_images/image92.jpg

../../../_images/image105.png

../../../_images/image115.png

(4)接线图:#

循迹传感器接扩展板的D11、D7、D8引脚(左11,中7,右8)。

(5)项目代码:#

/*
  keyes 4WD 多功能智能车
  课程 3.1
  线路跟踪传感器
  http://www.keyes-robot.com
*/

#define L_PIN 11  // 左侧线路跟踪传感器引脚
#define M_PIN 7   // 中间线路跟踪传感器引脚
#define R_PIN 8   // 右侧线路跟踪传感器引脚

int valL, valM, valR;  // 三个传感器的变量值

/* 功能:初始化串口和传感器引脚 */
void setup() {
  Serial.begin(9600);  // 初始化串口通信,波特率 9600
  pinMode(L_PIN, INPUT);  // 设置左传感器引脚为输入
  pinMode(M_PIN, INPUT);  // 设置中传感器引脚为输入
  pinMode(R_PIN, INPUT);  // 设置右传感器引脚为输入
}

/* 功能:读取传感器值并通过串口输出 */
void loop() {
  valL = digitalRead(L_PIN);  // 读取左传感器值
  valM = digitalRead(M_PIN);  // 读取中传感器值
  valR = digitalRead(R_PIN);  // 读取右传感器值

  Serial.print("left: "); Serial.print(valL);  // 输出左传感器值
  Serial.print(" middle: "); Serial.print(valM);  // 输出中传感器值
  Serial.print(" right: "); Serial.println(valR);  // 输出右传感器值并换行

  delay(500);  // 延时 500 毫秒,保证读取稳定
}

(6)项目结果:#

上传代码带开发板,打开串口监视,可以看到左中右三个循迹传感器的状态,如果我们用白纸去遮挡传感器,传感器的状态都是0。在没有接收到信号的时候,三个传感器都是高电平状态,显示的数值是1。

(7)代码说明:#

Serial.begin(9600)-初始化串口,串口通信波特率为9600 ,

**pinMode-**定义单片机PIN脚模式是输入还是输出,input是输入,output是输出,

**digitalRead-**读取引脚电平状态,一般有两种状态,HIGH或者LOW。

(8)项目拓展:#

上面我们了解了循迹传感器的工作原理,接下来我们在第9脚接上一个LED 灯,然后通过读取循迹传感器的状态,来控制LED的亮和灭。如下图接线:

我们开始来编写代码:

示例代码 2(KE0165_3.2.ino):

/*
  keyes 4WD 多功能智能车
  课程 3.2
  线路跟踪传感器
  http://www.keyes-robot.com
*/

#define L_PIN 11      // 左侧线路跟踪传感器引脚
#define M_PIN 7       // 中间线路跟踪传感器引脚
#define R_PIN 8       // 右侧线路跟踪传感器引脚
#define LED_PIN 9     // LED 灯引脚

int valL, valM, valR;  // 三个传感器的变量值

/* 功能:初始化串口和引脚模式 */
void setup() {
  Serial.begin(9600);           // 初始化串口通信,波特率 9600
  pinMode(L_PIN, INPUT);        // 设置左传感器引脚为输入
  pinMode(M_PIN, INPUT);        // 设置中间传感器引脚为输入
  pinMode(R_PIN, INPUT);        // 设置右传感器引脚为输入
  pinMode(LED_PIN, OUTPUT);     // 设置 LED 引脚为输出
}

/* 功能:读取传感器值,输出串口信息,并控制 LED 灯 */
void loop() {
  valL = digitalRead(L_PIN);    // 读取左传感器值
  valM = digitalRead(M_PIN);    // 读取中间传感器值
  valR = digitalRead(R_PIN);    // 读取右传感器值

  Serial.print("left: ");       // 输出左传感器值
  Serial.print(valL);
  Serial.print(" middle: ");    // 输出中间传感器值
  Serial.print(valM);
  Serial.print(" right: ");     // 输出右传感器值
  Serial.println(valR);

  if (valL == LOW || valM == LOW || valR == LOW) {  // 任一传感器检测到信号
    digitalWrite(LED_PIN, HIGH);  // LED 灯灭
  } else {
    digitalWrite(LED_PIN, LOW);   // LED 灯亮
  }
}