Arduino课程作业:带保护机制的风扇控制系统 • 近场控制:电位器调风扇转速; • 远场控制:红外遥控风扇转速; • 急停保护:超声波测距关闭风扇。 创新可选项: • 分段提醒/报警机制:蜂鸣器、LED灯闪烁频率 • 反馈/显示机制:PWM波占空比定义相对转速,串口显示等的代码
时间: 2023-11-28 12:47:57 浏览: 229
用Arduino控制PWM风扇-项目开发
以下是一个简单的带保护机制的风扇控制系统的代码,包括近场控制、远场控制和急停保护:
```C++
// 引入所需的库
#include <IRremote.h>
#include <NewPing.h>
// 定义近场控制相关变量
const int potPin = A0; // 电位器连接的模拟输入引脚
const int fanPin = 9; // 风扇连接的数字输出引脚
// 定义远场控制相关变量
const int irPin = 11; // 红外接收器连接的数字输入引脚
const int irCode = 0x20DF40BF; // 遥控器发送的红外编码
IRrecv irrecv(irPin);
decode_results results;
// 定义急停保护相关变量
const int trigPin = 6; // 超声波传感器的触发引脚
const int echoPin = 7; // 超声波传感器的回声引脚
const int minDistance = 10; // 最小安全距离,单位:厘米
NewPing sonar(trigPin, echoPin);
// 定义分段提醒/报警机制相关变量
const int warnPin = 8; // 蜂鸣器连接的数字输出引脚
const int ledPin = 13; // LED连接的数字输出引脚
const int warnThreshold = 700; // 提醒/报警阈值,单位:模拟输入值
void setup() {
// 初始化近场控制相关引脚
pinMode(potPin, INPUT);
pinMode(fanPin, OUTPUT);
// 初始化远场控制相关引脚
irrecv.enableIRIn();
// 初始化急停保护相关引脚
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// 初始化分段提醒/报警机制相关引脚
pinMode(warnPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// 近场控制
int potValue = analogRead(potPin);
int fanSpeed = map(potValue, 0, 1023, 0, 255);
analogWrite(fanPin, fanSpeed);
// 远场控制
if (irrecv.decode(&results)) {
if (results.value == irCode) {
analogWrite(fanPin, 255);
}
irrecv.resume();
}
// 急停保护
int distance = sonar.ping_cm();
if (distance < minDistance) {
analogWrite(fanPin, 0);
}
// 分段提醒/报警机制
if (potValue > warnThreshold) {
digitalWrite(warnPin, HIGH);
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(warnPin, LOW);
digitalWrite(ledPin, LOW);
}
}
```
这个代码使用电位器近场控制风扇转速,使用红外遥控器远场控制风扇转速,使用超声波传感器急停保护系统,如果检测到有物体靠近风扇,则立即关闭风扇。此外,还添加了分段提醒/报警机制,当电位器输入值超过阈值时,蜂鸣器和LED灯将会警告提醒。
阅读全文