我來介紹一下我們的作品,我們常常很好奇目前的天氣是怎樣,但是看手機的氣象超級不準,非常的不方便。於是我們決定做一款非常精準的簡易氣象觀測站,精準度一定是大拇指,堪比國家等級。精準且方便攜帶是我們做的目的。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
Adafruit_BMP085_Unified bmp;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
if (!bmp.begin()) {
Serial.println("BMP180 初始化失敗!");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("BMP180 失敗");
while (1);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Weather Station");
delay(2000);
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("DHT22 讀取失敗");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("DHT22 讀取失敗");
return;
}
float pressure;
sensors_event_t event;
bmp.getEvent(&event);
if (event.pressure) {
pressure = event.pressure;
} else {
Serial.println("BMP180 讀取壓力失敗");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("壓力讀取失敗");
return;
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp:");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity:");
lcd.print(h);
lcd.print(" %");
delay(2000);
}