diff --git a/include/display.hpp b/include/display.hpp index 6e844e6..5610350 100644 --- a/include/display.hpp +++ b/include/display.hpp @@ -8,16 +8,19 @@ class Display { public: // Constructor - Display(); + Display(Adafruit_NeoPixel& p_leds); public: // Public methods - void setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_aqi, - ArduinoJson::V710PB22::JsonArray p_pollen); + void setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_pollen, + ArduinoJson::V710PB22::JsonArray p_aqi); void setPrecipitationForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_precipitation); void setUVIForecastLed(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_uvi); void setLocalAirQualityLed(); void setWifiStatusLed(bool p_enable); + void setPixelColor(uint32_t p_index, uint8_t p_red, uint8_t p_green, uint8_t p_blue, uint8_t p_white); + void clear(); + void show(); private: // Private methods @@ -35,7 +38,7 @@ class Display { private: // Private members - Adafruit_NeoPixel m_leds; + Adafruit_NeoPixel& m_leds; std::array m_precipitation_forecast_map; std::array m_air_quality_forecast_map; uint8_t m_max_pollen_map; diff --git a/src/display.cpp b/src/display.cpp index 4c4511d..bb2bd02 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -1,8 +1,6 @@ #include "../include/display.hpp" -Display::Display() { - // m_leds = Adafruit_NeoPixel(m_NUM_LEDS_PROTO_V1, m_DATA_PIN_PROTO_V1, NEO_RGBW + NEO_KHZ800); - +Display::Display(Adafruit_NeoPixel& p_leds) : m_leds(p_leds) { m_precipitation_forecast_map = {11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; m_air_quality_forecast_map = {23, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}; m_max_pollen_map = 26; @@ -13,8 +11,8 @@ Display::Display() { return; } -void Display::setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_aqi, - ArduinoJson::V710PB22::JsonArray p_pollen) { +void Display::setPollenPlusAQIForecastLeds(uint32_t p_current_time, ArduinoJson::V710PB22::JsonArray p_pollen, + ArduinoJson::V710PB22::JsonArray p_aqi) { uint32_t first_aqi_time = p_pollen[0]["aqi"].as(); uint32_t first_pollen_time = p_pollen[0]["time"].as(); @@ -77,6 +75,20 @@ void Display::setLocalAirQualityLed() {} void Display::setWifiStatusLed(bool p_enable) {} +void Display::setPixelColor(uint32_t p_index, uint8_t p_red, uint8_t p_green, uint8_t p_blue, uint8_t p_white) { + m_leds.setPixelColor(p_index, m_leds.Color(p_red, p_green, p_blue, p_white)); +} + +void Display::clear() { + m_leds.clear(); + return; +} + +void Display::show() { + m_leds.show(); + return; +} + float Display::findMaxValueInTwelveHourInterval(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array) { float max_value = 0.0f; diff --git a/src/main.cpp b/src/main.cpp index a680931..d2db1e8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,3 +1,4 @@ +#include #include #include "../include/backend_communication.hpp" @@ -15,12 +16,18 @@ #define CONNECT_BUTTON BUTTON_BUILTIN DESPatch dESPatch; -Display display; + +Adafruit_NeoPixel leds = Adafruit_NeoPixel(29, 14, NEO_GRBW + NEO_KHZ800); +Display display(leds); + WifiHandler wifi_handler(LED_BUILTIN, display); BackendCommunication backend_communication(wifi_handler); void setup() { + display.clear(); + display.show(); + Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); @@ -88,7 +95,12 @@ void loop(void) { text = String(millis()) + " time: " + std::to_string(time).c_str(); Serial.println(text); - // display.setUVIForecastLed(time, backend_communication.m_weather_data["UVI"].as()); + // display.setPollenPlusAQIForecastLeds(time, backend_communication.m_weather_data["pollen"].as(), + // backend_communication.m_weather_data["AQI"].as()); + // display.setPrecipitationForecastLeds(time, + // backend_communication.m_weather_data["precipitation"].as()); + display.setUVIForecastLed(time, backend_communication.m_weather_data["UVI"].as()); + display.show(); } dESPatch.checkForUpdate(true); delay(2000);