Arduino 可控台灯、小夜灯、红外遥控和风扇温湿度控制项目教程
Arduino 可控台灯、小夜灯、红外遥控和风扇温湿度控制项目教程
本文将详细介绍使用 Arduino 实现可控台灯、可控小夜灯、红外遥控和可控风扇温湿度读取的项目,并提供相关电路设计、硬件连接、程序编写和固件烧录的步骤和代码示例。
一、可控台灯
可控台灯的实现主要涉及到以下几个部分:电路设计、硬件连接、程序编写和固件烧录。
- 电路设计
可控台灯的电路设计比较简单,只需要一个三极管和一个电阻即可。具体连接方式如下图所示。
- 硬件连接
将三极管的三个脚分别连接到 A0 口、GND 口和台灯的正极(LED 正极),将电阻的两端分别连接到 GND 口和台灯的负极(LED 负极)。
- 程序编写
程序主要分为两个部分:初始化和循环。初始化部分主要用来初始化 A0 口为模拟输出,循环部分则用来控制三极管的输出电压,从而控制台灯的亮度。
代码如下所示:
void setup() {
pinMode(A0, OUTPUT); // 将 A0 口设置为模拟输出
}
void loop() {
int value;
for (value = 0; value <= 255; value += 5) { // 逐渐增加输出电压,控制亮度
analogWrite(A0, value);
delay(50); // 延时一段时间,使亮度逐渐增加
}
for (value = 255; value >= 0; value -= 5) { // 逐渐减小输出电压,控制亮度
analogWrite(A0, value);
delay(50); // 延时一段时间,使亮度逐渐减小
}
}
- 固件烧录
将程序上传到 Arduino 板子上,然后将三极管和电阻连接到对应的引脚即可。
二、可控小夜灯
可控小夜灯的实现与可控台灯类似,只需要将电路设计、硬件连接和程序编写稍作修改即可。
- 电路设计
可控小夜灯的电路设计同样比较简单,只需要一个三极管和一个电阻即可。具体连接方式如下图所示。
- 硬件连接
将三极管的三个脚分别连接到 A1 口、GND 口和小夜灯的正极(LED 正极),将电阻的两端分别连接到 GND 口和小夜灯的负极(LED 负极)。
- 程序编写
程序同样分为初始化和循环两个部分。初始化部分主要用来初始化 A1 口为模拟输出,循环部分则用来控制三极管的输出电压,从而控制小夜灯的亮度。
代码如下所示:
void setup() {
pinMode(A1, OUTPUT); // 将 A1 口设置为模拟输出
}
void loop() {
int value;
for (value = 0; value <= 255; value += 5) { // 逐渐增加输出电压,控制亮度
analogWrite(A1, value);
delay(50); // 延时一段时间,使亮度逐渐增加
}
for (value = 255; value >= 0; value -= 5) { // 逐渐减小输出电压,控制亮度
analogWrite(A1, value);
delay(50); // 延时一段时间,使亮度逐渐减小
}
}
- 固件烧录
将程序上传到 Arduino 板子上,然后将三极管和电阻连接到对应的引脚即可。
三、红外遥控
红外遥控主要涉及到红外传感器的使用和红外遥控信号的解析。
- 红外传感器的使用
将红外传感器的三个引脚连接到 Arduino 板子上,分别为 VCC、GND 和 OUT。
- 红外遥控信号的解析
使用红外遥控器对红外传感器进行遥控,然后通过程序解析出对应的红外遥控信号。
代码如下所示:
#include <IRremote.h>
int RECV_PIN = 2; // 红外传感器接收信号的引脚
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // 启用红外传感器
}
void loop() {
if (irrecv.decode(&results)) { // 如果接收到红外信号
Serial.println(results.value, HEX); // 输出信号的十六进制值
irrecv.resume(); // 继续等待下一次红外信号
}
}
四、可控风扇温湿度读取
可控风扇温湿度读取主要涉及到 DHT11 传感器的使用和 PWM 控制风扇转速。
- DHT11 传感器的使用
将 DHT11 传感器的三个引脚连接到 Arduino 板子上,分别为 VCC、GND 和 DATA。
- PWM 控制风扇转速
使用 PWM 控制风扇的转速,从而实现可控风扇的功能。
代码如下所示:
#include <DHT.h>
#define DHTPIN 3 // DHT11 传感器连接的引脚
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE); // 初始化 DHT11 传感器
int fanPin = 5; // 风扇连接的引脚
void setup() {
Serial.begin(9600);
dht.begin(); // 启动 DHT11 传感器
pinMode(fanPin, OUTPUT); // 将风扇连接的引脚设置为输出模式
}
void loop() {
float h = dht.readHumidity(); // 读取湿度
float t = dht.readTemperature(); // 读取温度
if (isnan(h) || isnan(t)) { // 如果读取失败
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
int fanSpeed = map(h, 0, 100, 0, 255); // 根据湿度计算风扇转速
analogWrite(fanPin, fanSpeed); // 控制风扇转速
delay(1000); // 延时一段时间,等待下一次读取
}
以上就是可控台灯、可控小夜灯、红外遥控、可控风扇温湿度读取的主要代码以及相关 Arduino IDE 编译生成的固件。需要注意的是,以上代码仅供参考,具体实现可能需要根据实际情况进行适当的修改。
原文地址: https://www.cveoy.top/t/topic/lL0v 著作权归作者所有。请勿转载和采集!