Update display
This commit is contained in:
parent
ccd03735ea
commit
24794eb5b3
259
src/main.cpp
259
src/main.cpp
@ -63,7 +63,7 @@ void initSystems() {
|
||||
unsigned long lastWeatherUpdate = 0;
|
||||
unsigned long lastDisplayOverride = 0;
|
||||
const unsigned long weatherUpdateInterval = 2700000; // 45 minutes in milliseconds
|
||||
const unsigned long displayOverrideTimeout = 1200000; // 2 minutes in milliseconds
|
||||
const unsigned long displayOverrideTimeout = 120000; // 2 minutes in milliseconds
|
||||
bool is_display_off = false;
|
||||
bool display_override = false;
|
||||
|
||||
@ -249,108 +249,142 @@ bool fetchWeatherData() {
|
||||
humidity = doc["main"]["humidity"];
|
||||
pressure = doc["main"]["pressure"].as<float>() / 1000;
|
||||
wind_speed = doc["wind"]["speed"].as<float>();
|
||||
// Define 10 messages for each weather condition
|
||||
if (mainWeather == "Clear") {
|
||||
String clearMessages[] = {
|
||||
"All systems nominal. Atmospheric clearance detected.",
|
||||
"Clear skies confirmed. Solar energy levels stable for ship systems.",
|
||||
"Sky conditions optimal for external scan. Proceed with visual sweep.",
|
||||
"Visibility restored. All monitoring systems active and secure.",
|
||||
"Open space ahead. Prepare for normal operations.",
|
||||
"Solar reflection steady. Systems running at full capacity.",
|
||||
"Clear. No interference detected. Navigation optimal.",
|
||||
"Visible space clear. Proceed with standard operations.",
|
||||
"Skies unclouded. No anomalies detected.",
|
||||
"No obstructions in sight. Navigation systems operating normally."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(clearMessages, 10);
|
||||
} else if (mainWeather == "Clouds") {
|
||||
String cloudMessages[] = {
|
||||
"Cloud cover detected. Light interference on visual systems.",
|
||||
"Overcast conditions observed.",
|
||||
"Shadows overhead. Adjusting sensitivity on light filters.",
|
||||
"Moderate cloud formation detected. System performance normal.",
|
||||
"Atmospheric interference present. Monitoring light levels.",
|
||||
"Cloud coverage rising. Operational impact minimal.",
|
||||
"Low-visibility overhead. Preparing for reduced solar input.",
|
||||
"Sensors report cloud patterns. Adjusting visibility protocols.",
|
||||
"Clouds forming in surrounding space. Adjusting navigational parameters.",
|
||||
"Light cloud cover detected. No operational impact expected."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(cloudMessages, 10);
|
||||
} else if (mainWeather == "Rain") {
|
||||
String rainMessages[] = {
|
||||
"Precipitation incoming. Shielding activated.",
|
||||
"Rain detected. External moisture levels rising, activating water barriers.",
|
||||
"Surface moisture increasing. Prepare for external wet conditions.",
|
||||
"Rainstorm detected. External protection systems online.",
|
||||
"Raindrops detected. Surface conditions becoming slick.",
|
||||
"Incoming water influx. Prepare external surfaces for wet conditions.",
|
||||
"Rain detected. Traction systems engaged for slippery terrain.",
|
||||
"Wet conditions approaching. Hydration protocols for external units activated.",
|
||||
"Raindrops increasing. Proceed with caution on exterior surfaces.",
|
||||
"Heavy rain in the vicinity. External equipment may require adjustment."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(rainMessages, 10);
|
||||
} else if (mainWeather == "Drizzle") {
|
||||
String drizzleMessages[] = {
|
||||
"Light drizzle detected. Surface moisture rising, minimal impact.",
|
||||
"Low-intensity rain detected. External systems functioning normally.",
|
||||
"Fine mist detected. Prepare for minor surface wetting.",
|
||||
"Gentle drizzle. Light hydration of external units detected.",
|
||||
"Atmospheric moisture levels rising slowly. Proceed with minor caution.",
|
||||
"Minor drizzle detected. No immediate impact on operations.",
|
||||
"Drizzle detected. Adjusting exterior temperature controls.",
|
||||
"Light rain confirmed. Surface conditions remain stable.",
|
||||
"Drizzle present. External activity unaffected.",
|
||||
"Micro-droplets detected. Surface wetting minimal."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(drizzleMessages, 10);
|
||||
} else if (mainWeather == "Thunderstorm") {
|
||||
String thunderstormMessages[] = {
|
||||
"Warning: Severe storm approaching. High-voltage hazard detected.",
|
||||
"Electrical storm detected in proximity. Shielding and surge protection engaged.",
|
||||
"Thunderstorm alert: Prepare for sudden power fluctuations.",
|
||||
"Storm in progress. Lightning detected. Surge protection active.",
|
||||
"Electrical interference detected. Recalibrating external sensors.",
|
||||
"Thunderstorm imminent. High-energy levels detected. Activating surge protocols.",
|
||||
"Power surge imminent. Warning: high-voltage storm detected.",
|
||||
"Electrical storm approaching. Brace for system disturbances.",
|
||||
"Warning: Lightning detected. Secure sensitive systems immediately.",
|
||||
"Severe atmospheric storm approaching. Power systems primed for protection."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(thunderstormMessages, 10);
|
||||
} else if (mainWeather == "Snow") {
|
||||
String snowMessages[] = {
|
||||
"Cryogenic conditions detected. Snowfall in progress.",
|
||||
"Snow accumulation imminent. External traction systems engaged.",
|
||||
"Freezing precipitation confirmed. Temperature control systems adjusting.",
|
||||
"Snow falling. Low-traction surfaces detected. Proceed with caution.",
|
||||
"Heavy snowfall recorded. Thermal systems operating at full capacity.",
|
||||
"Snowstorm imminent. Prepare for reduced external mobility.",
|
||||
"Temperature drop confirmed. Snow accumulation expected.",
|
||||
"Snow detected. De-icing systems online.",
|
||||
"Cryogenic particles in atmosphere. Surface stability compromised.",
|
||||
"Snowfall detected. All external movement restricted."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(snowMessages, 10);
|
||||
} else if (mainWeather == "Mist" || mainWeather == "Fog") {
|
||||
String mistMessages[] = {
|
||||
"Low-visibility conditions. Activate infrared scanning systems.",
|
||||
"Fog detected. Navigation systems recalibrating for low-visibility operation.",
|
||||
"Atmospheric opacity confirmed. Proceed with caution at reduced speed.",
|
||||
"Dense mist detected. Visibility dropped to critical levels.",
|
||||
"Fog levels increasing. Adjusting pathfinding parameters for accuracy.",
|
||||
"Dense fog detected. Slowing navigation to safe speeds.",
|
||||
"Increased fog density. Visual systems recalibrated.",
|
||||
"Low visibility confirmed. Proceed with extreme caution.",
|
||||
"Mist detected in sector. Visual enhancement systems engaged.",
|
||||
"Fog detected. Reduced visibility affecting sensor accuracy."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(mistMessages, 10);
|
||||
} else {
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + "Unspecified weather anomaly detected. Conditions unstable. Monitoring closely.";
|
||||
}
|
||||
if (mainWeather == "Clear") {
|
||||
String clearMessages[] = {
|
||||
"All systems nominal. Atmospheric clearance detected.",
|
||||
"Clear skies confirmed. Solar energy levels stable for ship systems.",
|
||||
"Sky conditions optimal for external scan. Proceed with visual sweep.",
|
||||
"Visibility restored. All monitoring systems active and secure.",
|
||||
"Open space ahead. Prepare for normal operations.",
|
||||
"Solar reflection steady. Systems running at full capacity.",
|
||||
"Clear. No interference detected. Navigation optimal.",
|
||||
"Visible space clear. Proceed with standard operations.",
|
||||
"Skies unclouded. No anomalies detected.",
|
||||
"No obstructions in sight. Navigation systems operating normally.",
|
||||
"Bright and clear skies. Optimal conditions for long-range communication.",
|
||||
"Perfect visibility. All systems functioning within expected parameters.",
|
||||
"Clear and stable. No impact on external activities.",
|
||||
"The sky is free of disturbances. Proceed with confidence.",
|
||||
"Atmospheric conditions steady. All sensors reporting normal."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(clearMessages, 15);
|
||||
} else if (mainWeather == "Clouds") {
|
||||
String cloudMessages[] = {
|
||||
"Cloud cover detected. Light interference on visual systems.",
|
||||
"Overcast conditions observed.",
|
||||
"Shadows overhead. Adjusting sensitivity on light filters.",
|
||||
"Moderate cloud formation detected. System performance normal.",
|
||||
"Atmospheric interference present. Monitoring light levels.",
|
||||
"Cloud coverage rising. Operational impact minimal.",
|
||||
"Low-visibility overhead. Preparing for reduced solar input.",
|
||||
"Sensors report cloud patterns. Adjusting visibility protocols.",
|
||||
"Clouds forming in surrounding space. Adjusting navigational parameters.",
|
||||
"Light cloud cover detected. No operational impact expected.",
|
||||
"Cloud formation increasing. Visual scan in progress.",
|
||||
"Partly cloudy. Visibility reduced, but no immediate danger.",
|
||||
"Overcast sky. Sensors adjusting for changing light levels.",
|
||||
"Increasing cloud density. Proceeding with caution on exterior tasks.",
|
||||
"Cumulus clouds observed. No operational impact anticipated."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(cloudMessages, 15);
|
||||
} else if (mainWeather == "Rain") {
|
||||
String rainMessages[] = {
|
||||
"Precipitation incoming. Shielding activated.",
|
||||
"Rain detected. External moisture levels rising, activating water barriers.",
|
||||
"Surface moisture increasing. Prepare for external wet conditions.",
|
||||
"Rainstorm detected. External protection systems online.",
|
||||
"Raindrops detected. Surface conditions becoming slick.",
|
||||
"Incoming water influx. Prepare external surfaces for wet conditions.",
|
||||
"Rain detected. Traction systems engaged for slippery terrain.",
|
||||
"Wet conditions approaching. Hydration protocols for external units activated.",
|
||||
"Raindrops increasing. Proceed with caution on exterior surfaces.",
|
||||
"Heavy rain in the vicinity. External equipment may require adjustment.",
|
||||
"Intense rain incoming. All systems on standby for moisture management.",
|
||||
"Heavy precipitation. Surface traction adjustments being made.",
|
||||
"Rainfall intensifying. Navigation systems recalibrating.",
|
||||
"Storm-like rain detected. Prepare for potential delays in operations.",
|
||||
"Rain approaching. All moisture-sensitive systems under review."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(rainMessages, 15);
|
||||
} else if (mainWeather == "Drizzle") {
|
||||
String drizzleMessages[] = {
|
||||
"Light drizzle detected. Surface moisture rising, minimal impact.",
|
||||
"Low-intensity rain detected. External systems functioning normally.",
|
||||
"Fine mist detected. Prepare for minor surface wetting.",
|
||||
"Gentle drizzle. Light hydration of external units detected.",
|
||||
"Atmospheric moisture levels rising slowly. Proceed with minor caution.",
|
||||
"Minor drizzle detected. No immediate impact on operations.",
|
||||
"Drizzle detected. Adjusting exterior temperature controls.",
|
||||
"Light rain confirmed. Surface conditions remain stable.",
|
||||
"Drizzle present. External activity unaffected.",
|
||||
"Micro-droplets detected. Surface wetting minimal.",
|
||||
"Drizzle increasing. Minimal disruption to operational efficiency.",
|
||||
"Light mist falling. Preparing exterior equipment for light moisture.",
|
||||
"Slight drizzle detected. Monitoring for potential buildup.",
|
||||
"Traces of rain observed. Surface conditioning proceeding normally.",
|
||||
"Faint drizzle. No significant effect on operational systems."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(drizzleMessages, 15);
|
||||
} else if (mainWeather == "Thunderstorm") {
|
||||
String thunderstormMessages[] = {
|
||||
"Warning: Severe storm approaching. High-voltage hazard detected.",
|
||||
"Electrical storm detected in proximity. Shielding and surge protection engaged.",
|
||||
"Thunderstorm alert: Prepare for sudden power fluctuations.",
|
||||
"Storm in progress. Lightning detected. Surge protection active.",
|
||||
"Electrical interference detected. Recalibrating external sensors.",
|
||||
"Thunderstorm imminent. High-energy levels detected. Activating surge protocols.",
|
||||
"Power surge imminent. Warning: high-voltage storm detected.",
|
||||
"Electrical storm approaching. Brace for system disturbances.",
|
||||
"Warning: Lightning detected. Secure sensitive systems immediately.",
|
||||
"Severe atmospheric storm approaching. Power systems primed for protection.",
|
||||
"Lightning detected. Power surge prevention systems activated.",
|
||||
"Thunderstorm conditions intensifying. All external systems under review.",
|
||||
"Severe electrical interference. Adjusting system tolerance for spikes.",
|
||||
"Warning: Storm detected. Power fluctuations expected.",
|
||||
"Thunderstorm alert. Lightning strike imminent. Systems on full defense."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(thunderstormMessages, 15);
|
||||
} else if (mainWeather == "Snow") {
|
||||
String snowMessages[] = {
|
||||
"Cryogenic conditions detected. Snowfall in progress.",
|
||||
"Snow accumulation imminent. External traction systems engaged.",
|
||||
"Freezing precipitation confirmed. Temperature control systems adjusting.",
|
||||
"Snow falling. Low-traction surfaces detected. Proceed with caution.",
|
||||
"Heavy snowfall recorded. Thermal systems operating at full capacity.",
|
||||
"Snowstorm imminent. Prepare for reduced external mobility.",
|
||||
"Temperature drop confirmed. Snow accumulation expected.",
|
||||
"Snow detected. De-icing systems online.",
|
||||
"Cryogenic particles in atmosphere. Surface stability compromised.",
|
||||
"Snowfall detected. All external movement restricted.",
|
||||
"Snow level increasing. Traction systems are in full effect.",
|
||||
"Blizzard conditions approaching. Prepare for limited visibility.",
|
||||
"Heavy snow confirmed. Adjusting exterior systems for extreme conditions.",
|
||||
"Low-temperature alert. Ice accumulation expected.",
|
||||
"Snowstorm detected. Proceed with extreme caution on external surfaces."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(snowMessages, 15);
|
||||
} else if (mainWeather == "Mist" || mainWeather == "Fog") {
|
||||
String mistMessages[] = {
|
||||
"Low-visibility conditions. Activate infrared scanning systems.",
|
||||
"Fog detected. Navigation systems recalibrating for low-visibility operation.",
|
||||
"Atmospheric opacity confirmed. Proceed with caution at reduced speed.",
|
||||
"Dense mist detected. Visibility dropped to critical levels.",
|
||||
"Fog levels increasing. Adjusting pathfinding parameters for accuracy.",
|
||||
"Dense fog detected. Slowing navigation to safe speeds.",
|
||||
"Increased fog density. Visual systems recalibrated.",
|
||||
"Low visibility confirmed. Proceed with extreme caution.",
|
||||
"Mist detected in sector. Visual enhancement systems engaged.",
|
||||
"Fog detected. Reduced visibility affecting sensor accuracy.",
|
||||
"Thick fog detected. External systems recalibrating for safety.",
|
||||
"Reduced visibility confirmed. Navigating with extreme care.",
|
||||
"Mist conditions detected. Heightened caution in exterior operations.",
|
||||
"Fog rising in vicinity. Adjusting navigational parameters for safe course.",
|
||||
"Low-visibility conditions. Monitoring environment closely."
|
||||
};
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + getRandomMessage(mistMessages, 15);
|
||||
} else {
|
||||
weatherState = generateTrendMessage(temperature, prevTemperature, "Temperature") + generateTrendMessage(pressure, prevPressure, "Atmospheric pressure") + generateTrendMessage(humidity, prevHumidity, "Humidity") + generateTrendMessage(wind_speed, prevWindSpeed, "Wind speed") + "Unspecified weather anomaly detected. Monitoring closely.";
|
||||
}
|
||||
prevTemperature = temperature;
|
||||
prevHumidity = humidity;
|
||||
prevPressure = pressure;
|
||||
@ -396,7 +430,7 @@ bool fetchWeatherData() {
|
||||
|
||||
int scrollPos = SCREEN_WIDTH; // Global variable to keep track of the scroll position
|
||||
unsigned long lastScrollTime = 0; // To control the scroll speed
|
||||
const int scrollDelay = 100; // Delay in milliseconds between scroll updates
|
||||
const int scrollDelay = 80; // Delay in milliseconds between scroll updates
|
||||
|
||||
void displayWeatherData() {
|
||||
display.clearDisplay();
|
||||
@ -415,7 +449,7 @@ void displayWeatherData() {
|
||||
if (!is_display_off) {
|
||||
if (millis() - lastScrollTime > scrollDelay) {
|
||||
// Update scroll position
|
||||
scrollPos -= 6; // Move left by 1 pixel each time
|
||||
scrollPos -= 5; // Move left by 1 pixel each time
|
||||
|
||||
lastScrollTime = millis();
|
||||
|
||||
@ -431,20 +465,21 @@ void displayWeatherData() {
|
||||
display.print(weatherState);
|
||||
// Clear the area for "Time left" display before printing
|
||||
display.fillRect(0, 37, SCREEN_WIDTH, 27, BLACK); // Clear area for "Time left"
|
||||
display.setCursor(0, 40);
|
||||
display.setCursor(0, 44);
|
||||
display.setTextSize(1);
|
||||
display.printf(" %5.2f C %d%%\r\n", temperature, humidity);
|
||||
display.drawRect(43, 40, 3, 3, WHITE); // Degree symbol
|
||||
display.drawRect(43, 44, 3, 3, WHITE); // Degree symbol
|
||||
|
||||
display.setCursor(0, 52);
|
||||
display.setCursor(0, 55);
|
||||
display.printf(" %.3fbar %.1fm/s \r\n", pressure, wind_speed);
|
||||
display.drawLine(0, 18, 127, 18, 1);
|
||||
display.drawLine(65, 18, 65, 0, 1);
|
||||
display.drawLine(0, 40, 127, 40, 1);
|
||||
|
||||
display.drawBitmap(0, 38, temperature_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(74, 38, humidity_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(0, 51, pressure_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(74, 51, wind_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(0, 42, temperature_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(74, 42, humidity_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(0, 54, pressure_icon, 10, 10, WHITE);
|
||||
display.drawBitmap(74, 54, wind_icon, 10, 10, WHITE);
|
||||
|
||||
int pos = 69;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user