使用Arduino UNO复活电脑的风扇
目录
1.所需器件
2.接线
3.程序
4.运行结果
引言:在炎炎夏日,我偶然发现了一台旧电脑主机的风扇。这台风扇不仅保存完好,还支持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); // 设置风扇速度
}
4.运行结果
https://b23.tv/L0DFb02