铁皮屋1 发表于 2018-5-30 14:29:37

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

1602扩展版温度计 今天又用1602显示屏扩展板+dth11温度计,arduinoUNO做了一个温度计,这个温度计最大的特点是简单,接三根线就行,剩下的就是烧录程序了。 Arduino IDE版本:1.0.6 程序如下。 缺点是,要按,才测量温度,不按不理你。 DTH11,用的是12号中断口。

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

#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 = {"Ri",
                  "Up",               
                  "Do",
                  "Le",
                  "Se" };
int adc_key_val ={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);
         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)
{
         return k;
       }
   }
   
   if (k >= NUM_KEYS)k = -1;//No valid key pressed
   return k;
}

铁皮屋1 发表于 2018-5-30 14:51:19














页: [1]
查看完整版本: dth11,1602扩展版,arduino uno温度计简单教程,