dth11,1602扩展版,arduino uno温度计简单教程,

2018-05-301.8万
AI 快速预览详细 收起
本文介绍了如何使用DHT11传感器和1602扩展板与Arduino Uno制作一个简单的温度计。项目名称为“Arduino Uno温度计”,硬件清单包括DHT11传感器、1602扩展板和Arduino Uno。最终效果是能够测量并显示温度和湿度。难度等级较低,适合初学者尝试。
1602扩展版温度计
今天又用1602显示屏扩展板+dth11温度计,ArduinoUNO做了一个温度计,这个温度计最大的特点是简单,接三根线就行,剩下的就是烧录程序了。
Arduino IDE版本:1.0.6
程序如下。
缺点是,要按,才测量温度,不按不理你。
DTH11,用的是12号中断口。


1602显示屏扩展板是一体的,买回来就是这样,但是缺几根针,我去焊了几根针。这个扩展板不好用,没传感器什么的,不推荐各位买。


[mw_shl_code=applescript,true]#include <LiquidCrystal.h>
#include <dht11.h>
#include <Wire.h>
dht11 DHT;
#define DHT11_PIN 12
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
char msgs[5][3] = {"Ri",
                    "Up",               
                    "Do",
                    "Le",
                    "Se" };
int adc_key_val[5] ={50, 200, 400, 600, 800};
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup() {
  //put your setup code here, to run once:
lcd.clear();
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("% CRQ shcool %");
}
void loop() {
delay (1000);
  //put your main code here, to run repeatedly:
adc_key_in = analogRead(0);    //read the value from the sensor
  
  key= get_key(adc_key_in);  // convert intokey press
  
  if(key != oldkey)   // if keypress isdetected
   {
   delay(50);  // wait for debouncetime
   adc_key_in = analogRead(0);    //read the value from the sensor
   key = get_key(adc_key_in);    //convert into key press
   if (key != oldkey)   
   {   
     lcd.setCursor(0, 1);
     
     int chk;//chk用于存储DHT11传感器的数据
Serial.print("DHT11 \t");
//读取DHT11传感器的数据
chk = DHT.read(DHT11_PIN);
switch(chk)
{
caseDHTLIB_OK:
Serial.print("OK,\t");
break;
caseDHTLIB_ERROR_CHECKSUM:
Serial.print("Checksumerror,\t");
break;
caseDHTLIB_ERROR_TIMEOUT:
Serial.print("Time outerror,\t");
break;
Serial.print("Unknown error,\t");
break;
}
//串口显示温湿度值
Serial.print(DHT.humidity,1);
Serial.print("\t");
Serial.println(DHT.temperature,1);
    oldkey = key;
     if (key >=0){
       lcd.print("H");
                lcd.print(DHT.humidity,1);
        lcd.print("% ");
          lcd.print(msgs[key]);
           lcd.print(" ");
lcd.print(DHT.temperature,1);
lcd.print("C");
     }
    }
  }
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
   int k;
   
   for (k = 0; k < NUM_KEYS; k++)
    {
     if (input < adc_key_val[k])
{
           return k;
       }
   }
   
   if (k >= NUM_KEYS)k = -1;  //No valid key pressed
   return k;
}[/mw_shl_code]

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
铁皮屋1
铁皮屋1
作者




- 没有更多了 -