Files
Arduino/WeatherPredictor/WeatherPredictor.ino
T
2026-07-17 19:55:47 +07:00

47 lines
1.3 KiB
Arduino

#include <Arduino.h>
#include <Wire.h>
#include "config.h"
#include "display_ui.h"
#include "sensors.h"
#include "rtc_time.h"
static void i2cScan() {
Serial.println(F("I2C scan:"));
byte found = 0;
for (byte addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.printf(" device at 0x%02X\n", addr);
found++;
}
}
Serial.printf(" %d device(s) found\n", found);
}
void setup() {
Serial.begin(115200);
delay(200);
Serial.println(F("\n=== Weather Predictor booting ==="));
Wire.begin(I2C_SDA, I2C_SCL); // MUST come before any I2C driver begin()
i2cScan();
displayBegin();
displaySplash("Weather", "Predictor v0.1");
if (!sensorsBegin()) Serial.println(F("BMP180 not found!"));
if (!rtcBegin()) Serial.println(F("DS3231 not found!"));
if (rtcLostPower()) {
Serial.println(F("RTC lost power -> setting to build time"));
rtcSet(RtcTime{2026, 7, 17, 12, 0, 0}); // temporary; NTP will correct later
}
}
void loop() {
RtcTime t = rtcNow();
float abs_ = readAbsPressureHpa();
Serial.printf("%04u-%02u-%02u %02u:%02u:%02u abs=%.1f msl=%.1f t=%.1f\n",
t.year, t.month, t.day, t.hour, t.minute, t.second,
abs_, toSeaLevelHpa(abs_, DEFAULT_ALTITUDE_M), readTemperatureC());
delay(2000);
}