zoukankan      html  css  js  c++  java
  • Arduino读取温湿度dh11+烟雾气体MQ2+彩灯ws2812

    1获取温湿度

    D4-x信号线

     

    #include <TroykaDHT.h>
    
    // типы сенсоров: DHT11, DHT21, DHT22
    DHT dht(4, DHT11);
    
    
    
    void setup()
    {
      Serial.begin(9600);
      dht.begin();
    }
    
    void loop()
    {
       dht.read();
       if(dht.getState()==DHT_OK)
        {
         String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity());
         Serial.println(msg);
        }
        //delay(2000);
    }
    

      

    获取mq2

    原理

    https://blog.csdn.net/qq_40276310/article/details/80766166?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

    MQ-2传感器对可燃气、烟雾等气体灵敏度高,基于MQ-2的烟雾传感器模块通过电路设计,提供了两种输出方式:

    数字量输出:通过板载电位器设定浓度阈值,当检测到环境气体浓度超过阈值时,通过数字引脚DO输出低电平。
    模拟量输出:浓度越高,AO引脚输出的电压值越高,通过ADC采集的模拟值越高。

    #define Sensor_AO A0
    #define Sensor_DO 2
    
    unsigned int sensorValue = 0;
    
    void setup()
    {
      pinMode(Sensor_DO, INPUT);
      Serial.begin(9600);
    }
    
    void loop()
    {
      sensorValue = analogRead(Sensor_AO);
      Serial.print("Sensor AD Value = ");
      Serial.println(sensorValue);
    
      if (digitalRead(Sensor_DO) == LOW)
      {
        Serial.println("Alarm!");
      }
      //delay(1000);
    }
    

      

    光照传感器

    /*
     Name:		Sketch1.ino
     Created:	2019/2/10 20:33:27
     Author:	Administrator
    */
    uint8_t PinLed = 3;					//led正极
    uint8_t PinLightsensor = A0;		//光传感模块模拟数据接收引脚
    //注意:我是用的光传感器模块是随着光照增加输出减小的。
    int MaxLight = 850;					//光传感器模块完全遮蔽时的输出值(实际值比这个略小)
    int MinLight = 300;					//光传感模块在灯光下完全裸露时的输出值(实际值比这个值略大)
    // the setup function runs once when you press reset or power the board
    void setup() {
    	pinMode(PinLed, OUTPUT);
    	pinMode(PinLightsensor, INPUT);
    }
     
    // the loop function runs over and over again until power down or reset
    void loop() {
    	int curLight = analogRead(PinLightsensor);					//读取光传感器当前值
    	int outVal = map(curLight, MinLight, MaxLight, 0, 255);		//把光传感器的值映射到0-255(PWM输出范围),需要注意的是Map函数不会强制结果在0-255范围内(当curLight超出map函数的第二三两参数的范围时出现超出0-255的情况)。
    	outVal = constrain(outVal, 0, 255);							//强制映射后的值在0-255范围内
    	analogWrite(PinLed,outVal );								//输出亮度,当光传感器得到的光照越少,那么LED就越亮
    	delay(100);													//延时
    }
    

      

    获取温度 18b20

    #include<OneWire.h>
    #include<DallasTemperature.h>
    #define BUS 2
    OneWire onewire(BUS);
    DallasTemperature sensors(&onewire);
    
    
    void setup() {
      
      Serial.begin(9600);
      sensors.begin();
    }
     
    void loop() {
     
       sensors.requestTemperatures();
       String temp= String(sensors.getTempCByIndex(0));
       Serial.println(temp);
     
    }
    

      

    综合例程

    、mq2

    #include <TroykaDHT.h>
    
    // типы сенсоров: DHT11, DHT21, DHT22
    DHT dht(4, DHT11);
    
    #define Sensor_AO A0
    unsigned int sensorValue = 0;
    
    void setup()
    {
      Serial.begin(9600);
      dht.begin();
    }
    
    void loop()
    {
       dht.read();
       if(dht.getState()==DHT_OK)
        {
         sensorValue = analogRead(Sensor_AO);//5000-20000PPM 对应  0-1023
           
         String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-MQ2-"+String(sensorValue)+"-";
         Serial.println(msg);
        }
        //delay(2000);
    }
    

     

    光照+温湿度 dh11

    #include <TroykaDHT.h>
    
    // типы сенсоров: DHT11, DHT21, DHT22
    DHT dht(4, DHT11);
    
    //光传感模块模拟数据接收引脚
    #define Sensor_A7 A7
    unsigned int sensorValue = 0;
    
    //注意:我是用的光传感器模块是随着光照增加输出减小的。
    int MaxLight = 850;          //光传感器模块完全遮蔽时的输出值(实际值比这个略小)
    int MinLight = 10;         //光传感模块在灯光下完全裸露时的输出值(实际值比这个值略大)
    
    // 主函数执行一次
    void setup()
    {
      Serial.begin(9600);//串口初始化
      dht.begin(); //温湿度传感器初始化
       //Serial.println('go');
    }
    
    void loop()
    {
       dht.read();//读取温湿度
       if(dht.getState()==DHT_OK)
        {
         sensorValue = analogRead(Sensor_A7);//5000-20000PPM 对应  0-1023
         int outVal = map(sensorValue, MinLight, MaxLight, 0, 255);    //把光传感器的值映射到0-255(PWM输出范围),需要注意的是Map函数不会强制结果在0-255范围内(当curLight超出map函数的第二三两参数的范围时出现超出0-255的情况)。
         outVal = constrain(outVal, 0, 255); //constrain是一个宏,它把一个值强制限定在一个范围内,省去了我们使用一组IF语句
         outVal=255-outVal;
         //数据打包
         String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-Light-"+String(outVal)+"-";
         //串口发给树莓派
         Serial.println(msg);
        }
        delay(200);
    }
    

      

     

     光照+mq2+温湿度

    #include <TroykaDHT.h>
     
    //获取温湿度 DHT11, DHT21, DHT22
    DHT dht(4, DHT11);
     
    //光传感模块模拟数据接收引脚
    #define Sensor_light A1
    unsigned int sensorValue_light = 0;
    //注意:我是用的光传感器模块是随着光照增加输出减小的。
    int MaxLight = 850;          //光传感器模块完全遮蔽时的输出值(实际值比这个略小)
    int MinLight = 0;         //光传感模块在灯光下完全裸露时的输出值(实际值比这个值略大)
    
    //燃气烟雾浓度
    #define Sensor_mq2 A2
    unsigned int sensorValue_mq2 = 0;
    
    
    void setup()
    {
      Serial.begin(9600);//串口通信
      dht.begin();//温湿度采集开始
       
    }
     
    void loop()
    {
       dht.read();// 温湿度
       if(dht.getState()==DHT_OK)
        {
          //光照
         sensorValue_light = analogRead(Sensor_light);//5000-20000PPM 对应  0-1023
         int light_outVal = map(sensorValue_light, MinLight, MaxLight, 0, 255);    //把光传感器的值映射到0-255(PWM输出范围),需要注意的是Map函数不会强制结果在0-255范围内(当curLight超出map函数的第二三两参数的范围时出现超出0-255的情况)。
         light_outVal = constrain(light_outVal, 0, 255); //constrain是一个宏,它把一个值强制限定在一个范围内,省去了我们使用一组IF语句
         light_outVal=255-light_outVal;
         //烟雾燃气
         sensorValue_mq2 = analogRead(Sensor_mq2);
         //数据打包
         String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-Light-"+String(light_outVal)+"-MQ2-"+String(sensorValue_mq2);
         Serial.println(msg);
        }
        //delay(2000);
    }
    

      

     MQ2+雨滴传感器+温湿度

    数值映射0-1023   ~ 0-255

    串口打包输出

    #include <TroykaDHT.h>
     
    //获取温湿度 DHT11, DHT21, DHT22
    DHT dht(4, DHT11);
     
    //水滴传感模块模拟数据接收引脚
    #define Sensor_water A1
    unsigned int sensorValue_water = 0;
    
    
    //燃气烟雾浓度
    #define Sensor_mq2 A2
    unsigned int sensorValue_mq2 = 0;
    
    // 将数据映射过去
    int GuiyiValue(int Real_Value=0,int Real_Min=0 , int Real_Max=1024 ,int tager_min=0,int tager_max=255)
     {
       int outVal = map(Real_Value, Real_Min, Real_Max, tager_min, tager_max);  //(Real_Min-Real_Max)映射数据到范围 (tager_min-tager_max)
       outVal = constrain(outVal, tager_min, tager_max); // 判断数据是否在范围内并限定上下限
       return outVal;
     }
    
    
    void setup()
    {
      Serial.begin(9600);//串口通信
      dht.begin();//温湿度采集开始
       
    }
     
    void loop()
    {
       dht.read();// 温湿度
       if(dht.getState()==DHT_OK)
        {
          //水滴
         sensorValue_water = 1024-analogRead(Sensor_water);//水滴越多值越小 所以取反
    
         sensorValue_water=GuiyiValue(sensorValue_water,0 , 1024 ,0,255);
       
         //烟雾燃气
         sensorValue_mq2 = analogRead(Sensor_mq2);  //手捂着哈气实际最大620 最大应该带是1023
        
         
         //数据打包
         String msg=String("")+String("Temperature-")+String(dht.getTemperatureC())+String("-Humidity-")+String(dht.getHumidity())+"-Water-"+String(sensorValue_water)+"-MQ2-"+String(sensorValue_mq2)+"-";
         Serial.println(msg);
        }
        //delay(2000);
    }
    

      

  • 相关阅读:
    element的导航栏修改其选中时颜色的问题
    如何设置element的时间选择器,当日后面的时间无法选中
    Mybatis3配置详解
    mybatis-generator mybatis逆向生成
    Oracle中Thin和OCI的区别
    Jetbrains系列之Phpstorm使用sftp远程开发线上项目
    Thinkphp6.0文档部分摘抄
    linux + 宝塔 + thinkphp5.0 搭建后端api各种问题集合
    Oracle用户,角色和权限
    CentOS7.6 安装 Oracle19c
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/12628894.html
Copyright © 2011-2022 走看看