ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2.3 Arduino各类模块-4(Arduino uno伺服器拓展模块、DHT11温湿度传感器)

2021-10-01 10:01:55  阅读:167  来源: 互联网

标签:Arduino double print celsius 模块 温湿度 println Serial DHT11


7、Arduino uno伺服器拓展模块

 

8、DHT11温湿度传感器

该模块使用DHT11库实现

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 2  //设置data的IO口
void setup(){
  Serial.begin(9600);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
}
void loop(){
  Serial.println("\n");
  int chk = DHT11.read(DHT11PIN);
  Serial.print("Read sensor: ");
/*  switch (chk)
  {
    case DHTLIB_OK:
                Serial.println("OK");
                break;
    case DHTLIB_ERROR_CHECKSUM:
                Serial.println("Checksum error");
                break;
    case DHTLIB_ERROR_TIMEOUT:
                Serial.println("Time out error");
                break;
    default:
                Serial.println("Unknown error");
                break;
  }*/
  Serial.print("湿度 (%): ");
  Serial.println((float)DHT11.humidity, 2);
  Serial.print("温度 (oC): ");//摄氏度
  Serial.println((float)DHT11.temperature, 2);
  Serial.print("温度 (oF): ");//华氏度
  Serial.println(Fahrenheit(DHT11.temperature), 2);
  Serial.print("温度 (K): ");//开尔文
  Serial.println(Kelvin(DHT11.temperature), 2);
  Serial.print("露点 (oC): ");
  Serial.println(dewPoint(DHT11.temperature, DHT11.humidity));
  Serial.print("露点快速计算 (oC): ");
  Serial.println(dewPointFast(DHT11.temperature, DHT11.humidity));
  delay(10000);
}
double Fahrenheit(double celsius){//华氏度
        return 1.8 * celsius + 32;
}  
double Kelvin(double celsius){//开尔文
        return celsius + 273.15;
}   
double dewPoint(double celsius, double humidity){//露点计算
        double A0= 373.15/(273.15 + celsius);
        double SUM = -7.90298 * (A0-1);
        SUM += 5.02808 * log10(A0);
        SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
        SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
        SUM += log10(1013.246);
        double VP = pow(10, SUM-3) * humidity;
        double T = log(VP/0.61078);   // temp var
        return (241.88 * T) / (17.558-T);
}
double dewPointFast(double celsius, double humidity){//露点快速计算
        double a = 17.271;
        double b = 237.7;
        double temp = (a * celsius) / (b + celsius) + log(humidity/100);
        double Td = (b * temp) / (a - temp);
        return Td;
}

 9、MQ2烟雾传感器

int MQ2=A1;//指定模拟端口A1
int val=0;//声明临时变量

void setup()
{
  pinMode(MQ2,INPUT);
  Serial.begin(9600);//设置串口波特率为9600
}
void loop()
{
  val=analogRead(MQ2);//读取A0口的电压值并赋值到val
  Serial.println(val);//串口发送val值
  delay(1000);
}

10、土壤湿度传感器

#define PIN_AO 2
#define PIN_DO 4
  
void setup() {  
  pinMode(PIN_AO, INPUT);
  pinMode(PIN_DO, INPUT);  
  Serial.begin(9600);  
}  
  
void loop() {
  Serial.print("AO=");  
  Serial.print(analogRead(PIN_AO));
  Serial.print(", DO=");  
  Serial.println(digitalRead(PIN_DO));
  delay(500);  
  int newdata = map(-analogRead(PIN_AO),-1023,-245,0,100);
} 

标签:Arduino,double,print,celsius,模块,温湿度,println,Serial,DHT11
来源: https://blog.csdn.net/m0_59889595/article/details/120525846

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有