arduino人体红外传感器接入2号引脚,当感应到人时,点亮开发板上13号引脚的LED灯。串口监视器输出1,否则熄灭LED灯,输出0,程序编写
时间: 2024-09-28 09:02:59 浏览: 39
要在Arduino Uno或类似板子上实现人体红外传感器的人体检测功能,你需要一个人体红外传感器,比如IR Proximity Sensor或IR Breakout,将其连接到Arduino UNO的数字2(通常是数字2或3)引脚作为输入。当你想要LED灯在检测到人体时亮起,LED灯接到数字13(即GPIO 13)作为输出。以下是基本的程序代码示例:
```c++
#include <Wire.h>
#include <Adafruit_Sensor.h> // 引入红外传感器库
#include <Adafruit_IRrecv.h> // IR接收库
#include <Adafruit_PCA9685.h> // PWM驱动库(如果需要控制LED亮度)
// 设置I2C地址和通道
#define P9685_ADDR 0x40
#define LED_CHANNEL 0
Adafruit_PCA9685 pwm; // 创建PWM对象
Adafruit_IRrecv irrecv; // 创建红外接收对象
decode_results results; // 解码结果
const int sensorPin = 2; // 红外传感器连接到第2引脚
const int ledPin = 13; // LED连接到第13引脚
void setup() {
Serial.begin(9600); // 开始串口通信
pwm.begin(P9685_ADDR); // 初始化PCA9685
irrecv.enableIRIn(); // 启动红外接收
irrecv.setDecodeMode(NEC); // 使用NEC模式(适用于许多常见的红外遥控器)
}
void loop() {
// 检测红外信号
if (irrecv.decode(&results)) {
Serial.println("1"); // 输出1,表示检测到人
// 利用PCA9685控制LED亮度,这里仅作示例,实际硬件需添加相应代码
if (results.value > 500) { // 举例:如果红外强度大于某个阈值,则开启LED
analogWrite(ledPin, 255); // LED全亮度
} else {
analogWrite(ledPin, 0); // LED关闭
}
} else {
Serial.println("0"); // 输出0,未检测到人,LED关闭
analogWrite(ledPin, 0); // LED熄灭
}
delay(100); // 调度频率
}
```
注意:这个程序使用了PCA9685模块来模拟LED亮度变化,如果你的项目中并没有使用该模块,那么直接使用digitalWrite(ledPin, HIGH/LOW)即可控制LED的开闭。
阅读全文