锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

任务5 DHT11温湿度传感器(arduino程序)

时间:2023-05-06 03:37:00 亮度传感器arduino

DHT11是一种具有校准数字信号输出的温湿度传感器。其精度和湿度±5%RH,温度±2℃,量程湿度5-95%RH,温度0~ 50℃。百度自行引脚接口

一、加入arduino的库DHT.h,库中程序直接使用

二、温湿度不同LED实现显示不必要的颜色(使用WS2812B)

其中TempC和h变量对应获取到的温度值和湿度值

if(TempC >= 30leds[0] = CRGB::Red;    FastLED.show();  }  else if(TempC <= {     leds[0] = CRGB::Green;    FastLED.show();  }  delay(50);  if(h >= {      leds[1] = CRGB::Red;    FastLED.show();  }  else if(h <= 85leds[1] = CRGB::Green;    FastLED.show();

三、程序代码完整

硬件接线参考宏定义的引脚标号

#include #include #include #include #include #include "U8glib.h"#include "DHT.h"#define ONE_WIRE_BUS 3#define button13              #define DHTPIN 2#define DHTTYPE DHT11#define NUM_LEDS               LED灯珠数量#define DATA_PIN          Arduino输出控制信号引脚#define LED_TYPE WS2812     LED灯带型号#define COLOR_ORDER GRB      RGB红、绿、蓝LED排列顺序 uint8_t max_bright =        LED亮度控制变量,可使用数值为 0 ~ 255,数值越大则光带亮度越高 CRGB leds[NUM_LEDS];      leds Adafruit_MLX90614 mlx = Adafruit_MLX90614();U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);DHT dht(DHTPIN,DHTTYPE);uint8_t openState = 0;uint8_t c = 0;float TempC = 0;float h;float t;static unsigned char deng[] U8G_PROGMEM = {0x00,0x00,0x7E,0x3E,0x40,0x22,0x40,0x12,0x42,0x12,0x24,0x0A,0x28,0x12,0x10,0x12,0x10,0x22,0x28,0x22,0x28,0x22,0x44,0x16,0x42,0x0A,0x01,0x02,0x00,0x02,0x00,0x02,/*"邓",0*/};static unsigned char zhao[] U8G_PROGMEM = {0x00,0x00,0xBE,0x3F,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x29,0xBE,0x10,0x22,0x3F,0x22,0x21,0x22,0x21,0x22,0x21,0x3E,0x3F,0x00,0x00,0x12,0x11,0x22,0x22,0x21,0x22,/*"照",1*/};static unsigned char quan[] U8G_PROGMEM = {0x08,0x00,0xC8,0x3F,0x88,0x20,0x88,0x20,0xBF,0x20,0x08,0x11,0x0C,0x11,0x1C,0x11,0x2A,0x0A,0x2A,0x0A,0x09,0x04,0x08,0x04,0x08,0x0A,0x08,0x11,0x88,0x20,0x68,0x40,/*"权",2*/};void button_State()A  if(digitalRead(button1){ //检测按钮是否按下      delay(20); //延迟抖动       if(digitalRead(button(1)(//判断长短键             )openState           while(digitalRead(button);void draw0(void) {  u8g.drawXBMP( 0,0,16,16,16,deng);  u8g.drawXBMP( 16,0,16,16,zhao);  u8g.drawXBMP( 32,0,16,16,16,quan);  u8g.setFont(u8g_font_unifont);//  u8g.drawStr( 0,45,"DengZhaoquan:");//  u8g.drawStr( 0,12,"190306238");    u8g.setPrintPos u8g.print("h= ");  u8g.print(h);  u8g.print("%");  u8g.setPrintPos u8g.print("t = ");  u8g.print(t);  u8g.print(" C");//  sensors.requestTemperatures();//  TempC = sensors.getTempCByIndex(0);    u8g.setPrintPos(0,30);  u8g.print("DS18B20:");  u8g.print(TempC);  u8g.print(" C");  //  leds[1] = CRGB::Red;        leds[0]是第一个灯珠,leds[1]第二个灯珠// FastLED.show();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;LED色彩}void draw1(void) {//  u8g.drawXBMP( 0,16,16,16,16deng);//  u8g.drawXBMP( 16,16,16,16,16,16zhao);//  u8g.drawXBMP( 32,16,16,16,16quan);  u8g.setFont(u8g_font_unifont);  u8g.drawStr( 0,45,"Numb:");  u8g.setPrintPos(42,45);  u8g.print(c  );}void draw2(void) {//  u8g.drawXBMP( 0,0,128,64,bmp);//  u8g.drawXBMP( 16,16,16,16,16,16zhao);//  u8g.drawXBMP( 32,16,16,16,16quan);  u8g.setFont(u8g_font_unifont);//  u8g.drawStr( 0,45,"190306238:");  u8g.setPrintPos(42,45)/  u8g.print(c  );}void mode_0(){  u8g.firstPage();     do    draw0();  } while( u8g.nextPage() )void mode_1(){  u8g.firstPage();     do    draw();  } while( u8g.nextPage() )void mode_2(){  u8g.firstPage();     do    draw二、二、二、二while( u8g.nextPage() )void setup() {  Serial.begin(115200);  pinMode(button1,INPUT);  pinMode(12,OUTPUT);  digitalWrite(12,HIGH);  sensors.begin();  dht.begin();  LEDS.addLeds(leds,NUM_LEDS);  FastLED.setBrightness(max_bright);                   void loop() {  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC();   Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");//  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF(); /  Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");  h = dht.readHumidity(); / Read temperature as Celsius (the default)  t = dht.readTemperature();  sensors.requestTemperatures();  TempC = sensors.getTempCByIndex(0);  Serial.println();//  delay(50);  if(TempC >= 30leds[0] = CRGB::Red;    FastLED.show();  }  else if(TempC <= {     leds[0] = CRGB::Green;    FastLED.show();  }  delay(50);  if(h >= {      leds[1] = CRGB::Red;    FastLED.show();  }  else if(h <= 85)  {    leds[1] = CRGB::Green;    FastLED.show();  }  button_State();  switch (openState)  {    case 0://      openState = 0;      mode_0();     //      break;    case 1:      mode_1();     //      break;    case 2:      mode_2();     //      break;    case 3://      mode_3();     //      break;    default:      break;  }  if(openState == 3) openState = 0;  Serial.println(openState);}

 

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章