目录
引言:在炎炎夏日,我偶然发现了一台旧电脑主机的风扇。这台风扇不仅保存完好,还支持PWM调速功能。于是,我萌生了一个创意的想法------将其改造成一个可调速的风扇,通过按钮来控制转速。这样一来,就像模拟电脑主机在高温时自动提高转速散热,温度下降时又自动降低转速一样,既实用又有趣。
1.所需器件
(1)风扇,四个引脚VCC(12V)、GND(地)、PWM(调速信号)和测速信号(可选,可以不接);
(2)Arduino UNO;
(3)两个按钮模块;
(4)杜邦线若干;
(5)12V电源
2.接线
|-----|-----|
| 按钮A | UNO |
| VCC | 5V |
| GND | GND |
| OUT | D2 |
|-----|-----|
| 按钮B | UNO |
| VCC | 5V |
| GND | GND |
| OUT | D3 |
|-----|---------------|
| 风扇 | |
| VCC | 12V正极 |
| GND | 12V负极和UNO的GND |
| PWM | D9 |
3.程序
const int fanControlPin = 9; // 风扇PWM控制引脚
const int buttonUpPin = 2; // 增加转速按钮引脚
const int buttonDownPin = 3; // 减少转速按钮引脚
int fanSpeed = 128; // 初始风扇速度
unsigned long lastDebounceTime = 0; // 上次消抖时间
unsigned long debounceDelay = 50; // 消抖延时
void setup() {
pinMode(fanControlPin, OUTPUT);
pinMode(buttonUpPin, INPUT);
pinMode(buttonDownPin, INPUT);
}
void loop() {
int buttonUpState = digitalRead(buttonUpPin);
int buttonDownState = digitalRead(buttonDownPin);
// 检测增加转速按钮是否被按下
if (buttonUpState == HIGH) {
if (millis() - lastDebounceTime > debounceDelay) {
fanSpeed += 5; // 增加转速
if (fanSpeed > 255) fanSpeed = 255; // 限制最大值
lastDebounceTime = millis(); // 更新消抖时间
}
}
// 检测减少转速按钮是否被按下
if (buttonDownState == HIGH) {
if (millis() - lastDebounceTime > debounceDelay) {
fanSpeed -= 5; // 减少转速
if (fanSpeed < 0) fanSpeed = 0; // 限制最小值
lastDebounceTime = millis(); // 更新消抖时间
}
}
analogWrite(fanControlPin, fanSpeed); // 设置风扇速度
}