54 lines
No EOL
2.2 KiB
C++
54 lines
No EOL
2.2 KiB
C++
#ifndef __DISPLAY_HPP__
|
|
#define __DISPLAY_HPP__
|
|
|
|
#include <Adafruit_NeoPixel.h>
|
|
#include <Arduino.h>
|
|
#include <ArduinoJson.h>
|
|
|
|
class Display {
|
|
public:
|
|
// Constructor
|
|
Display(Adafruit_NeoPixel& p_leds);
|
|
|
|
public:
|
|
// Public methods
|
|
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
|
|
float findMaxValueInTwelveHourInterval(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array);
|
|
std::vector<float> mergeJsonArraysFromTimestamp(uint32_t p_time_stamp, ArduinoJson::V710PB22::JsonArray p_array_a,
|
|
ArduinoJson::V710PB22::JsonArray p_array_b);
|
|
std::vector<float> mergeJsonArraysFromTimestampHelper(uint32_t p_time_stamp,
|
|
ArduinoJson::V710PB22::JsonArray p_array_a,
|
|
ArduinoJson::V710PB22::JsonArray p_array_b);
|
|
std::tuple<uint8_t, uint8_t, uint8_t> mapValueToColorRGB(float p_value);
|
|
std::tuple<uint8_t, uint8_t, uint8_t, uint8_t> mapValueToColorRGBW(float p_value);
|
|
void setPixelToColorMappedValue(uint8_t index, float p_value);
|
|
|
|
private:
|
|
// Private static members
|
|
constexpr static uint16_t m_NUM_LEDS_PROTO_V1 = 29U;
|
|
constexpr static int16_t m_DATA_PIN_PROTO_V1 = 14;
|
|
|
|
private:
|
|
// Private members
|
|
Adafruit_NeoPixel& m_leds;
|
|
std::array<uint8_t, 12U> m_precipitation_forecast_map;
|
|
std::array<uint8_t, 12U> m_air_quality_forecast_map;
|
|
uint8_t m_max_pollen_map;
|
|
uint8_t m_max_air_qualilty_map;
|
|
uint8_t m_uvi_map;
|
|
uint8_t m_local_air_quality_map;
|
|
uint8_t m_wifi_status_map;
|
|
};
|
|
|
|
#endif // __DISPLAY_HPP__
|