回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【花雕学编程】Arduino动手做(232)---ESP32-S3 CAM使用红外线对管模块控制LED灯 简单

头像 驴友花雕 2024.09.30 45 0

0-3.jpg
09-.jpg
09--.jpg

红外对管模块是一种常用于检测物体存在与否的传感器模块,广泛应用于机器人避障、循迹小车、物体计数等场景。以下是红外对管模块的主要特点和使用方法:

1、红外对管模块的特点
组成: 红外对管模块由一个红外发射管和一个红外接收管组成。发射管发射红外光,接收管接收反射回来的红外光。
工作原理: 当发射的红外光遇到障碍物时,会反射回来并被接收管接收。接收管将信号传递给处理电路,输出高低电平信号。
调节灵敏度: 模块通常带有一个电位器,可以调节检测距离和灵敏度。
输出信号: 模块输出数字信号(高电平或低电平),可以直接连接到单片机或开发板的GPIO口。

2、应用场景
机器人避障: 检测前方是否有障碍物,控制机器人避开障碍。
循迹小车: 检测黑白线,实现小车沿特定轨迹行驶。
物体计数: 在流水线上检测物体通过的数量。
安防系统: 检测是否有物体进入特定区域。

3、使用方法
连接电路: 将模块的VCC引脚连接到电源(3.3V或5V),GND引脚连接到地,OUT引脚连接到单片机或开发板的数字输入引脚。
调节灵敏度: 通过旋转电位器调节检测距离和灵敏度。
读取信号: 使用代码读取OUT引脚的高低电平信号,判断是否有物体存在。

 

 

74.jpg

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十二:ESP32-S3 WROOM N16R8 CAM开发板WiFi+蓝牙模块
  OV2640/5640摄像头模组
 {花雕动手做}项目之二十八:ESP32-S3 CAM使用红外线对管模块控制LED灯

实验开源代码

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
   实验二百三十二:ESP32-S3 WROOM N16R8 CAM开发板WiFi+蓝牙模块
   OV2640/5640摄像头模组
  {花雕动手做}项目之二十八:ESP32-S3 CAM使用红外线对管模块控制LED灯
*/

#define PIN_IR_SENSOR 1  // 红外对管模块的输出引脚
#define PIN_LED 2        // LED连接到数字引脚D2

void setup() {
  Serial.begin(115200);  // 初始化串口通信,波特率为115200
  pinMode(PIN_IR_SENSOR, INPUT);  // 设置红外对管模块引脚为输入模式
  pinMode(PIN_LED, OUTPUT);       // 设置LED引脚为输出模式
  Serial.println("红外线对管模块准备就绪!");
}

void loop() {
  int sensorVal = digitalRead(PIN_IR_SENSOR);  // 读取红外对管模块的输出信号

  if (sensorVal == LOW) {
    digitalWrite(PIN_LED, LOW);  // 点亮LED
    Serial.println("检测到物体!");
  } else {
    digitalWrite(PIN_LED, HIGH);   // 关闭LED
    Serial.println("未检测到物体。");
  }

  delay(500);  // 延迟500毫秒
}

程序要点:
1、定义引脚和常量
#define PIN_IR_SENSOR 3  // 红外对管模块的输出引脚
#define PIN_LED 2        // LED连接到数字引脚D2

PIN_IR_SENSOR: 定义红外对管模块的输出引脚。
PIN_LED: 定义LED连接的引脚。

2、初始化设置
void setup() {
 Serial.begin(115200);  // 初始化串口通信,波特率为115200
 pinMode(PIN_IR_SENSOR, INPUT);  // 设置红外对管模块引脚为输入模式
 pinMode(PIN_LED, OUTPUT);       // 设置LED引脚为输出模式
}

Serial.begin(115200): 初始化串口通信,波特率为115200。
pinMode(PIN_IR_SENSOR, INPUT): 将红外对管模块引脚设置为输入模式。
pinMode(PIN_LED, OUTPUT): 将LED引脚设置为输出模式。

3、主循环
void loop() {
 int sensorVal = digitalRead(PIN_IR_SENSOR);  // 读取红外对管模块的输出信号

digitalRead(PIN_IR_SENSOR): 读取红外对管模块的输出信号,判断是否检测到物体。

4、控制LED
 if (sensorVal == LOW) {
   digitalWrite(PIN_LED, HIGH);  // 点亮LED
   Serial.println("检测到物体!");
 } else {
   digitalWrite(PIN_LED, LOW);   // 关闭LED
   Serial.println("未检测到物体。");
 }

if (sensorVal == LOW): 检查红外对管模块是否检测到物体(低电平)。
digitalWrite(PIN_LED, HIGH): 如果检测到物体,点亮LED。
Serial.println(“检测到物体!”): 输出检测结果到串口。
else: 如果未检测到物体。
digitalWrite(PIN_LED, LOW): 关闭LED。
Serial.println(“未检测到物体。”): 输出检测结果到串口。

5、延迟和循环
 delay(500);  // 延迟500毫秒
}

delay(500): 延迟500毫秒,避免过于频繁的检测和输出。

总结
这段代码通过红外对管模块检测物体的存在,并根据检测结果控制LED的亮灭,同时将检测结果输出到串口。

实验串口返回情况

 

74-1.jpg

实验场景图 

 

74-2.jpg

评论

user-avatar
icon 他的勋章
    展开更多