当有光照时,灯灭,人体红外传感器、声音传感器不能控制灯亮,当无光照时,人体红外传感器、声音传感器能控制灯的亮灭 请写出基于arduino的代码
时间: 2024-03-12 19:44:37 浏览: 23
好的,以下是基于 Arduino 的代码实现,可以实现当有光照时灯灭,无光照时人体红外传感器、声音传感器能控制灯的亮灭:
```c++
// 定义红外传感器的引脚
int pirPin = 2;
// 定义声音传感器的引脚
int soundPin = 3;
// 定义灯的引脚
int ledPin = 4;
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 设置红外传感器的引脚为输入模式
pinMode(pirPin, INPUT);
// 设置声音传感器的引脚为输入模式
pinMode(soundPin, INPUT);
// 设置灯的引脚为输出模式
pinMode(ledPin, OUTPUT);
}
void loop() {
// 读取红外传感器的值
int pirValue = digitalRead(pirPin);
// 读取声音传感器的值
int soundValue = digitalRead(soundPin);
// 如果有光照,灯灭
if (pirValue == HIGH) {
digitalWrite(ledPin, LOW);
} else {
// 如果无光照,根据声音传感器的值控制灯的亮灭
if (soundValue == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
}
// 输出传感器的值
Serial.print("PIR Sensor: ");
Serial.print(pirValue);
Serial.print(" - Sound Sensor: ");
Serial.print(soundValue);
Serial.print(" - LED: ");
Serial.println(digitalRead(ledPin));
// 稍微延迟一下
delay(100);
}
```
其中,红外传感器的引脚为 `2`,声音传感器的引脚为 `3`,灯的引脚为 `4`。在 `setup()` 函数中,我们初始化了引脚模式,并且启动了串口通信。在 `loop()` 函数中,我们读取了红外传感器和声音传感器的值,并根据情况控制灯的亮灭。最后,我们输出了传感器的值,并稍微延迟了一下,以便让程序运行更加稳定。