Pass reference to NeoPixels to Display class.

This commit is contained in:
Admar Schoonen 2024-08-31 17:32:34 +02:00
parent 3aecd54880
commit 60d91a5def
3 changed files with 38 additions and 11 deletions

View file

@ -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<uint8_t, 12U> m_precipitation_forecast_map;
std::array<uint8_t, 12U> m_air_quality_forecast_map;
uint8_t m_max_pollen_map;

View file

@ -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>();
uint32_t first_pollen_time = p_pollen[0]["time"].as<uint32_t>();
@ -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;

View file

@ -1,3 +1,4 @@
#include <Adafruit_NeoPixel.h>
#include <dESPatch.h>
#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<JsonArray>());
// display.setPollenPlusAQIForecastLeds(time, backend_communication.m_weather_data["pollen"].as<JsonArray>(),
// backend_communication.m_weather_data["AQI"].as<JsonArray>());
// display.setPrecipitationForecastLeds(time,
// backend_communication.m_weather_data["precipitation"].as<JsonArray>());
display.setUVIForecastLed(time, backend_communication.m_weather_data["UVI"].as<JsonArray>());
display.show();
}
dESPatch.checkForUpdate(true);
delay(2000);