Arduino 读取温湿度传感器控制led灯的亮灭——筑梦之路

该实例通过DHT11温湿度传感器监测环境,并根据湿度和温度控制LED灯的亮灭。当湿度超过45%RH或温度高于22摄氏度时,LED灯亮起,延时一段时间后熄灭。程序使用Arduino IDE编写,实现了基本的环境感应与响应功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * 本实例实现读取温湿度传感器来控制led灯的亮灭
 * 接线说明:
 * 温湿度传感器:-接gnd,中间接5V或者3.3V,剩下的数字引脚8(数据)
 * led灯:负极GND(串联一个电阻),正极数字引脚10
 */

#include <DHT.h>  //引入温湿度传感器库
#define D 8       //定义传感器的数据引脚

DHT dht(D,DHT11);    //实例化对象
int led=10;          //定义led灯的数字引脚

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);        //串口通信波特率
  pinMode(D,OUTPUT);         //引脚模式
  pinMode(led,OUTPUT);
  dht.begin();               //开始读取
}

void loop() {
  // put your main code here, to run repeatedly:
  //int chk=dht.read(D);      //读取所有的数据
  float hum=dht.readHumidity();   //读取湿度
  if(hum >= 45.00)                 //判断湿度是否超过45%RH
  {
    digitalWrite(led,HIGH);         //满足条件给led一个高电平
    Serial.print("湿度大于45%RH,灯亮了!!!  当前湿度值为");
    delay(3000);                    //亮灯三秒
  }
  else
  {
    digitalWrite(led,LOW);          //不满足条件熄灯
  }
  Serial.print("hum:");
  Serial.print(hum);
  Serial.println(" %RH");

  float tem = dht.readTemperature();       //读取温度
  if(tem>=22.00)                         //判断温度的条件
  {
    digitalWrite(led,HIGH);                //满足条件给led灯一个高电平
    Serial.print("温度大于22摄氏度,灯亮了!   当前温度值为");
    delay(5000);                        //亮灯5秒
  }
  else
  {
    digitalWrite(led,LOW);  
  }
  Serial.print("tem:");
  Serial.print(tem);
  Serial.println(" 摄氏度");
  delay(2000);
}

 

热敏电阻是简单,廉价且精确的组件,可轻松获取项目的温度数据。 热敏电阻是可变电阻,其电阻会随温度变化。根据其电阻对温度变化的响应方式对其进行分类。在负温度系数(NTC)热敏电阻中,电阻随温度的升高而减小。在正温度系数(PTC)热敏电阻中,电阻随温度的升高而增加。 NTC热敏电阻是最常见的,这就是我们将在本教程中使用的类型。NTC热敏电阻由半导体材料(例如金属氧化物或陶瓷)制成,该材料经过加热和压缩以形成对温度敏感的导电材料。 导电材料包含允许电流流过的电荷载流子。高温导致半导体材料释放更多的电荷载流子。在由氧化铁制成的NTC热敏电阻中,电子是电荷载流子。在氧化镍NTC热敏电阻中,载流子是电子空穴。 让我们构建一个基本的热敏电阻电路以了解其工作原理,以便稍后将其应用于其他项目。 由于热敏电阻是可变电阻,因此在计算温度之前,需要测量电阻。但是,Arduino无法直接测量电阻,只能测量电压。 Arduino将在热敏电阻和已知电阻之间的一点上测量电压。这被称为分压器。 热敏电阻的制造商可能会告诉您它的电阻,但是如果不是,则可以使用万用表进行查找。如果您没有万用表,可以按照我们的Arduino欧姆表教程,用Arduino制作欧姆表。您只需要知道热敏电阻的大小即可。例如,如果您的热敏电阻电阻为34,000 Ohms,则其为10K热敏电阻。如果是340,000欧姆,则为100K热敏电阻。
### 实现ESP8266读取DHT11/DHT22温湿度传感器数据并控制LED 以下是使用Arduino IDE编写的示例代码,该代码实现了通过ESP8266模块读取DHT11或DHT22温湿度传感器的数据,并根据特定条件控制LED的状态。 #### 所需库 为了实现此功能,需要安装以下库: - `DHT sensor library`[^1] - `ESPAsyncTCP` 和 `ESPAsyncWebServer` (用于网络服务)[^2] 可以通过 Arduino IDE 的库管理器轻松安装这些库。 #### 示例代码 ```cpp #include <DHT.h> // 导入DHT库 #define DHTPIN 13 // 定义DHT11数据引脚连接到GPIO13(D7) #define LED_PIN 2 // 定义LED连接到GPIO2 #define DHTTYPE DHT11 // 使用DHT11型号 // 初始化DHT对象 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); // 开启串口通信 pinMode(LED_PIN, OUTPUT); // 设置LED为输出模式 digitalWrite(LED_PIN, LOW); // 初始状态关闭LED dht.begin(); // 启动DHT传感器 } void loop() { float humidity = dht.readHumidity(); // 读取湿度 float temperature = dht.readTemperature();// 读取温度 if (isnan(humidity) || isnan(temperature)) { // 如果读数失败 Serial.println("Failed to read from DHT sensor!"); // 输出错误信息 return; } // 显示当前的温湿度数值 Serial.print("Humidity: "); Serial.print(humidity); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(temperature); Serial.println(" *C"); // 根据温度控制LED if (temperature >= 25.0) { // 当温度高于等于25度时点LED digitalWrite(LED_PIN, HIGH); } else { // 否则熄LED digitalWrite(LED_PIN, LOW); } delay(2000); // 延迟两秒钟再进行下一次读取 } ``` #### 功能描述 上述代码完成了以下几个主要功能: 1. **初始化硬件设备**:设置DHT11传感器LED的引脚配置。 2. **读取温湿度数据**:利用DHT库中的方法获取实时的温度和湿度值。 3. **异常处理机制**:当无法成功读取传感器数据时,程序会在串口中打印错误提示消息。 4. **逻辑判断与执行动作**:依据所测得的温度来决定是否开启或者关闭LED指示。如果检测到环境温度达到设定阈值(此处设为25°C),就会触发LED起;反之,则保持熄状态。 #### 注意事项 - 确认电路连线无误,尤其是电源供应给DHT11/DHT22要稳定可靠。 - 调整好开发板对应的端口号及波特率参数以便于调试观察效果。 - 可进一步扩展项目加入更多交互方式比如通过WiFi上传至云端平台展示等操作[^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值