Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Wire.h>
- #include <Adafruit_Sensor.h>
- #include <DHT.h>
- #include <Adafruit_BMP085.h>
- #include <WiFi.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #define DHTPIN 4
- #define DHTTYPE DHT22
- #define SCREEN_WIDTH 128
- #define SCREEN_HEIGHT 64
- const char* ssid = "your_SSID";
- const char* password = "your_PASSWORD";
- DHT dht(DHTPIN, DHTTYPE);
- Adafruit_BMP085 bmp;
- Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
- float previousPressure = 0.0;
- void setup() {
- Serial.begin(115200);
- WiFi.begin(ssid, password);
- while (WiFi.status() != WL_CONNECTED) {
- delay(1000);
- Serial.println("Connecting to WiFi...");
- }
- Serial.println("Connected to WiFi");
- dht.begin();
- if (!bmp.begin()) {
- Serial.println("Could not find a valid BMP085 sensor, check wiring!");
- while (1) {}
- }
- if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
- Serial.println(F("SSD1306 allocation failed"));
- while (1) {}
- }
- display.clearDisplay();
- }
- void loop() {
- float temperature = dht.readTemperature();
- float humidity = dht.readHumidity();
- float pressure = bmp.readPressure() / 100.0F; // Convert to hPa
- if (isnan(temperature) || isnan(humidity) || isnan(pressure)) {
- Serial.println("Failed to read from sensors!");
- return;
- }
- Serial.print("Temperature: ");
- Serial.print(temperature);
- Serial.println(" *C");
- Serial.print("Humidity: ");
- Serial.print(humidity);
- Serial.println(" %");
- Serial.print("Pressure: ");
- Serial.print(pressure);
- Serial.println(" hPa");
- String weatherPrediction = predictWeather(pressure);
- display.clearDisplay();
- display.setTextSize(1);
- display.setTextColor(SSD1306_WHITE);
- display.setCursor(0,0);
- display.print("Temp: "); display.print(temperature); display.println(" *C");
- display.print("Hum: "); display.print(humidity); display.println(" %");
- display.print("Pres: "); display.print(pressure); display.println(" hPa");
- display.print("Prediction: ");
- display.println(weatherPrediction);
- display.display();
- previousPressure = pressure;
- delay(60000); // Delay for 1 minute
- }
- String predictWeather(float currentPressure) {
- if (previousPressure == 0.0) {
- previousPressure = currentPressure;
- return "Gathering data...";
- }
- if (currentPressure > previousPressure) {
- return "Improving weather";
- } else if (currentPressure < previousPressure) {
- return "Worsening weather";
- } else {
- return "Stable weather";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement