From c5d84578012ca9030c8707925926e2ae84a0ff41 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Thu, 14 Dec 2023 15:19:05 +0100 Subject: [PATCH] Created LedComponent object, testing basic led. --- embedded/lib/Component/Component.hpp | 4 +--- embedded/lib/Component/LedComponent.cpp | 22 +++++++++++++++++++ embedded/lib/Component/LedComponent.hpp | 28 +++++++++++++++++++++++++ embedded/platformio.ini | 5 +++-- embedded/src/main.cpp | 5 +++++ 5 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 embedded/lib/Component/LedComponent.cpp create mode 100644 embedded/lib/Component/LedComponent.hpp diff --git a/embedded/lib/Component/Component.hpp b/embedded/lib/Component/Component.hpp index 344d781..b730b9f 100644 --- a/embedded/lib/Component/Component.hpp +++ b/embedded/lib/Component/Component.hpp @@ -5,9 +5,7 @@ enum class ComponentType { Digital, - Analog, - I2C, - Serial + Analog }; class Component{ diff --git a/embedded/lib/Component/LedComponent.cpp b/embedded/lib/Component/LedComponent.cpp new file mode 100644 index 0000000..e7a3673 --- /dev/null +++ b/embedded/lib/Component/LedComponent.cpp @@ -0,0 +1,22 @@ +#include "LedComponent.hpp" + +LedComponent::LedComponent(byte pin, byte pin_clock, uint8_t led_number) + : _pin(pin), _pinClock(pin_clock), _ledNumber(led_number), _led(nullptr) +{} + +LedComponent::~LedComponent() +{ + delete _led; +} + +void LedComponent::setup() +{ + _led = new ChainableLED(_pinClock,_pin,_ledNumber); +} + +void LedComponent::setColor(uint8_t led_number, Color color) +{ + if(led_number >= _ledNumber) + return; + _led->setColorRGB(led_number,color.red,color.green,color.blue); +} \ No newline at end of file diff --git a/embedded/lib/Component/LedComponent.hpp b/embedded/lib/Component/LedComponent.hpp new file mode 100644 index 0000000..c92448e --- /dev/null +++ b/embedded/lib/Component/LedComponent.hpp @@ -0,0 +1,28 @@ +#ifndef _HEADER_COMPONENT_LED +#define _HEADER_COMPONENT_LED +#include "Component.hpp" +#include + +struct Color +{ + byte red; + byte blue; + byte green; +}; + +class LedComponent +{ +public: + LedComponent(byte pin, byte pin_clock, uint8_t led_number); + ~LedComponent(); + void setup(); + void setColor(uint8_t led_number, Color color); + +private: + byte _pin; + byte _pinClock; + uint8_t _ledNumber; + ChainableLED* _led; +}; + +#endif // _HEADER_COMPONENT_LED \ No newline at end of file diff --git a/embedded/platformio.ini b/embedded/platformio.ini index 1f38097..0cdeea9 100644 --- a/embedded/platformio.ini +++ b/embedded/platformio.ini @@ -18,5 +18,6 @@ lib_deps = bbx10/DNSServer@^1.1.0 ArduinoJson olikraus/U8g2@^2.35.7 -extra_scripts = - pre:scripts/dotenv-var.py \ No newline at end of file + seeed-studio/Grove - Chainable RGB LED@^1.0.0 +extra_scripts = + pre:scripts/dotenv-var.py diff --git a/embedded/src/main.cpp b/embedded/src/main.cpp index 42de622..163f019 100644 --- a/embedded/src/main.cpp +++ b/embedded/src/main.cpp @@ -4,6 +4,7 @@ #include "ServerHandler.hpp" #include "Component.hpp" +#include "LedComponent.hpp" #include "Screen.hpp" #ifdef SSID_CLOVER @@ -14,6 +15,7 @@ #endif Component humidity(ComponentType::Analog, PIN_A0); +LedComponent led(D8,D7,2); void setup() { @@ -26,6 +28,7 @@ void setup() pinMode(D5, OUTPUT); digitalWrite(D5, LOW); + led.setup(); } void loop() @@ -34,6 +37,8 @@ void loop() auto& serverHandler = ServerHandler::GetInstance(); auto& dataHandler = DataHandler::GetInstance(); auto& screen = Display::Screen::GetInstance(); + led.setColor(0,{255,0,0}); + led.setColor(1,{0,255,0}); // Could not connect after setup: Showing screen failure if(!serverHandler.isConnected())