【Arduino】使用LCD1602和DHT11制作温湿度显示器
2015-05-19 14:57
621 查看
材料:
1.DHT11
2.LCD1602
3.LCD1602 转接板
4.Arduino UNO
5.Arduino 传感器扩展版
那个Arduino UNO 我当初挑类个便宜的山寨货买,结果发来和正版的长得一样 O(∩_∩)O吓死我了,,,,
1.DHT11
2.LCD1602
3.LCD1602 转接板
4.Arduino UNO
5.Arduino 传感器扩展版
那个Arduino UNO 我当初挑类个便宜的山寨货买,结果发来和正版的长得一样 O(∩_∩)O吓死我了,,,,
double Fahrenheit(double celsius) { return 1.8 * celsius + 32; } //摄氏温度度转化为华氏温度 double Kelvin(double celsius) { return celsius + 273.15; } //摄氏温度转化为开氏温度 // 露点(点在此温度时,空气饱和并产生露珠) // 参考: http://wahiduddin.net/calc/density_algorithms.htm 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); } // 快速计算露点,速度是5倍dewPoint() // 参考: http://en.wikipedia.org/wiki/Dew_point 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; } #include <dht11.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display dht11 DHT11; #define DHT11PIN 2 void setup() { lcd.init(); // initialize the lcd lcd.backlight(); lcd.print("Waiting..."); Serial.begin(9600); } void loop() { int chk = DHT11.read(DHT11PIN); switch (chk) { case DHTLIB_OK: lcd.setCursor(0, 0); lcd.print("Temp:"); lcd.print((float)DHT11.temperature,2); lcd.write(0xDF); lcd.print("C"); lcd.setCursor(0, 1); lcd.print("Humidity:"); lcd.print((float)DHT11.humidity,2); lcd.print("%"); break; case DHTLIB_ERROR_CHECKSUM: lcd.clear(); lcd.print("Checksum error"); delay(1000); lcd.clear(); break; case DHTLIB_ERROR_TIMEOUT: lcd.clear(); lcd.print("Time out error"); delay(1000); lcd.clear(); break; default: lcd.clear(); lcd.print("Unknown error"); delay(1000); lcd.clear(); break; } delay(1000); }
相关文章推荐
- 【Arduino】使用LCD1602和DHT11制作温湿度显示器
- 【Arduino】1.4 I2C LCD1602屏幕的使用
- Arduino使用LCD1602
- Arduino使用PN532注意问题#NFC
- Serial的基本使用和ArduinoIDE的串口工具——人人都能玩硬件
- 使用Arduino开发板制作交流电压表
- Arduino 使用看门狗
- [笔记]Arduino平台使用US-100超声波测距模块的串口模式测温实验
- 树莓派与Arduino Leonardo使用NRF24L01无线模块通信之基于RF24库 (一) 配置与测试
- Arduino-Lite, RoboPeak使用的高效轻量级AVR库(2)
- 使用TFT LCD制作Arduino触摸屏计算器
- Arduino初初教程6(串口的使用)
- ESP8266-01 使用 Arduino IDE
- Arduino使用OLED显示内容
- arduino上使用sprintf()函数输出float值出错
- 使用安卓* 电话通过英特尔® Edison的蓝牙串行端口 (SPP) 与Arduino代码通信
- Arduino使用倾斜开关
- Arduino使用土壤湿度传感器
- EDK使用实例之LCD1602