声光控灯红外控制灯程序
时间: 2023-07-31 22:05:01 浏览: 190
这是一个简单的声光控制灯的红外控制程序,使用Arduino开发板和红外遥控器,以及声音传感器和光敏电阻来控制灯的开启和关闭:
```c++
#include <IRremote.h> // 导入红外库
int receiver_pin = 11; // 红外接收器的引脚
IRrecv ir_receiver(receiver_pin); // 创建一个红外接收器对象
decode_results ir_results; // 创建一个解码结果对象
int sound_pin = A0; // 声音传感器的引脚
int light_pin = 9; // 灯的引脚
int light_threshold = 500; // 光敏电阻的阈值
bool is_light_on = false; // 记录灯的状态
void setup() {
pinMode(sound_pin, INPUT); // 声音传感器设为输入模式
pinMode(light_pin, OUTPUT); // 灯设为输出模式
ir_receiver.enableIRIn(); // 启用红外接收器
Serial.begin(9600); // 开启串口通信
}
void loop() {
int sound_value = analogRead(sound_pin); // 读取声音传感器的值
int light_value = analogRead(A1); // 读取光敏电阻的值
if (sound_value > 100 && light_value > light_threshold) { // 如果声音传感器的值大于100,且光敏电阻的值大于阈值
if (!is_light_on) { // 如果灯是关闭的
digitalWrite(light_pin, HIGH); // 点亮灯
is_light_on = true; // 记录灯的状态为开启
Serial.println("Light is on."); // 发送串口消息
}
} else { // 否则
if (is_light_on) { // 如果灯是开启的
digitalWrite(light_pin, LOW); // 关闭灯
is_light_on = false; // 记录灯的状态为关闭
Serial.println("Light is off."); // 发送串口消息
}
}
if (ir_receiver.decode(&ir_results)) { // 如果接收到了红外信号
switch (ir_results.value) { // 根据不同的红外信号执行不同的操作
case 0xFF6897: // 开关灯
if (is_light_on) {
digitalWrite(light_pin, LOW);
is_light_on = false;
Serial.println("Light is off.");
} else {
digitalWrite(light_pin, HIGH);
is_light_on = true;
Serial.println("Light is on.");
}
break;
case 0xFF9867: // 增加亮度
analogWrite(light_pin, min(255, analogRead(light_pin) + 10));
break;
case 0xFFB04F: // 减少亮度
analogWrite(light_pin, max(0, analogRead(light_pin) - 10));
break;
}
ir_receiver.resume(); // 继续接收红外信号
}
delay(100); // 延时100毫秒
}
```
这个程序使用了红外遥控器来控制灯的开启、关闭、增加亮度和减少亮度,同时也使用了声音传感器和光敏电阻来控制灯的开启和关闭。根据不同的输入信号,程序会执行不同的操作。
阅读全文