refactor led class
This commit is contained in:
@@ -1,29 +1,32 @@
|
|||||||
#include <led.h>
|
#include <led.h>
|
||||||
|
|
||||||
RGBled::RGBled(const uint8_t pin, const uint8_t num)
|
RGBled::RGBled(const uint8_t pin) : m_led(pin)
|
||||||
{
|
{
|
||||||
m_led = Adafruit_NeoPixel(num, pin, NEO_GRB + NEO_KHZ800);
|
pinMode(m_led, OUTPUT);
|
||||||
m_led.begin();
|
writeStatus(RGBled::ERROR);
|
||||||
m_led.setPixelColor(0, RED);
|
|
||||||
m_led.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RGBled::~RGBled()
|
RGBled::~RGBled()
|
||||||
{
|
{
|
||||||
m_led.clear();
|
pinMode(m_led, INPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RGBled::setStatus(const LedStatus s)
|
void RGBled::setStatus(const LedStatus s)
|
||||||
{
|
{
|
||||||
if (m_status == s) return;
|
if (m_status == s)
|
||||||
|
return;
|
||||||
|
std::lock_guard<std::mutex> lock(m_mutex);
|
||||||
m_status = s;
|
m_status = s;
|
||||||
RGB_BUILTIN_LED_COLOR_ORDER
|
writeStatus(m_status);
|
||||||
m_led.setPixelColor(0, s);
|
|
||||||
m_led.setBrightness(16);
|
|
||||||
m_led.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const RGBled::LedStatus RGBled::getSatus(void)
|
const RGBled::LedStatus RGBled::getSatus(void)
|
||||||
{
|
{
|
||||||
return m_status;
|
return m_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RGBled::writeStatus(const RGBled::LedStatus s)
|
||||||
|
{
|
||||||
|
RGBled::color_u u{.status = s};
|
||||||
|
rgbLedWrite(m_led, u.color.r, u.color.g, u.color.b);
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// System Inlcudes
|
// System Inlcudes
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <Adafruit_NeoPixel.h>
|
#include <mutex>
|
||||||
|
|
||||||
#define RED 0x00FF00
|
#define RED 0x00FF00
|
||||||
#define GREEN 0xFF0000
|
#define GREEN 0xFF0000
|
||||||
@@ -35,14 +35,29 @@ public:
|
|||||||
IDLE = GRAY
|
IDLE = GRAY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct color_t
|
||||||
|
{
|
||||||
|
uint8_t a, g, r, b;
|
||||||
|
};
|
||||||
|
|
||||||
|
union color_u
|
||||||
|
{
|
||||||
|
uint32_t status;
|
||||||
|
color_t color;
|
||||||
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
RGBled(const uint8_t pin = 48, const uint8_t num = 1);
|
RGBled(const uint8_t pin = 48);
|
||||||
~RGBled();
|
~RGBled();
|
||||||
|
|
||||||
void setStatus(const LedStatus s);
|
void setStatus(const LedStatus s);
|
||||||
const LedStatus getSatus(void);
|
const LedStatus getSatus(void);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Adafruit_NeoPixel m_led;
|
void writeStatus(const LedStatus s);
|
||||||
|
|
||||||
|
private:
|
||||||
LedStatus m_status = LedStatus::IDLE;
|
LedStatus m_status = LedStatus::IDLE;
|
||||||
|
std::mutex m_mutex;
|
||||||
|
const uint8_t m_led;
|
||||||
};
|
};
|
||||||
Reference in New Issue
Block a user