mirror of
https://gitlab.dit.htwk-leipzig.de/phillip.kuehne/dezibot.git
synced 2025-07-16 23:41:40 +02:00
chg: dev: first version of multiColorLight implemeted
This commit is contained in:
@ -1,31 +1,97 @@
|
||||
#include "MultiColorLight.h"
|
||||
|
||||
void MultiColorLight::begin(void){
|
||||
MultiColorLight::MultiColorLight():rgbLeds(ledAmount,ledPin){
|
||||
|
||||
};
|
||||
|
||||
void MultiColorLight::setLed(uint8_t index , uint32_t color){
|
||||
void MultiColorLight::begin(void){
|
||||
rgbLeds.begin();
|
||||
};
|
||||
|
||||
void MultiColorLight::setLed(uint8_t index , uint32_t color){
|
||||
if (index > ledAmount-1){
|
||||
//TODO: logging
|
||||
}
|
||||
rgbLeds.setPixelColor(index, normalizeColor(color));
|
||||
rgbLeds.show();
|
||||
};
|
||||
|
||||
|
||||
void MultiColorLight::setLed(leds leds, uint32_t color){
|
||||
switch (leds){
|
||||
case TOP_LEFT:
|
||||
MultiColorLight::setLed(0,color);break;
|
||||
case TOP_RIGHT:
|
||||
MultiColorLight::setLed(1,color);break;
|
||||
case BOTTOM:
|
||||
MultiColorLight::setLed(2,color);break;
|
||||
case TOP:
|
||||
for (int index = 0; index<2; index++){
|
||||
MultiColorLight::setLed(index,color);
|
||||
}break;
|
||||
case ALL:
|
||||
for (int index = 0; index<3; index++){
|
||||
MultiColorLight::setLed(index,color);
|
||||
}break;
|
||||
default:
|
||||
//TODO logging
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
void MultiColorLight::setTopLeds(uint32_t color){
|
||||
|
||||
MultiColorLight::setLed(TOP,color);
|
||||
};
|
||||
|
||||
void MultiColorLight::blink(uint16_t amount,uint32_t color, leds leds, uint32_t interval){
|
||||
for(uint16_t index = 0; index < amount;index++){
|
||||
MultiColorLight::setLed(leds, color);
|
||||
vTaskDelay(interval);
|
||||
MultiColorLight::turnOff(leds);
|
||||
vTaskDelay(interval);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
void MultiColorLight::turnOff(leds leds){
|
||||
|
||||
switch (leds){
|
||||
case TOP_LEFT:
|
||||
MultiColorLight::setLed(0,0);break;
|
||||
case TOP_RIGHT:
|
||||
MultiColorLight::setLed(1,0);break;
|
||||
case BOTTOM:
|
||||
MultiColorLight::setLed(2,0);break;
|
||||
case TOP:
|
||||
for (int index = 0; index<2; index++){
|
||||
MultiColorLight::setLed(index,0);
|
||||
}break;
|
||||
case ALL:
|
||||
rgbLeds.clear();break;
|
||||
default:
|
||||
//TODO logging
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
uint32_t MultiColorLight::color(uint8_t r, uint8_t g, uint8_t b){
|
||||
return 0;
|
||||
};
|
||||
return rgbLeds.Color(r,g,b);
|
||||
};
|
||||
|
||||
//PRIVATE
|
||||
uint32_t MultiColorLight::normalizeColor(uint32_t color,uint8_t maxBrightness){
|
||||
uint8_t red = (color&0x00FF0000)>>16;
|
||||
uint8_t green = (color&0x0000FF00)>>8;
|
||||
uint8_t blue = (color&0x000000FF);
|
||||
if (red > maxBrightness){
|
||||
red = maxBrightness;
|
||||
}
|
||||
if(green > maxBrightness){
|
||||
green = maxBrightness;
|
||||
}
|
||||
if(blue > maxBrightness){
|
||||
blue = maxBrightness;
|
||||
}
|
||||
return MultiColorLight::color(red,green,blue);
|
||||
}
|
@ -26,8 +26,14 @@ enum leds{
|
||||
};
|
||||
|
||||
class MultiColorLight{
|
||||
protected:
|
||||
static const uint16_t ledAmount = 3;
|
||||
static const int16_t ledPin = 48;
|
||||
static const uint8_t maxBrightness = 100;
|
||||
Adafruit_NeoPixel rgbLeds;
|
||||
public:
|
||||
|
||||
MultiColorLight();
|
||||
/**
|
||||
* @brief initialize the multicolor component
|
||||
*
|
||||
@ -94,7 +100,21 @@ public:
|
||||
* component, and BB is the blue component.
|
||||
*/
|
||||
uint32_t color(uint8_t r, uint8_t g, uint8_t b);
|
||||
|
||||
|
||||
private:
|
||||
/**
|
||||
* @brief normalizes every component of color to not exeed the maxBrightness
|
||||
*
|
||||
* @param color A 32-bit unsigned integer representing the color in the format
|
||||
* 0x00RRGGBB, where RR is the red component, GG is the green
|
||||
* component, and BB is the blue component.
|
||||
* @param maxBrigthness maximal level of brightness that is allowed for each color
|
||||
* @return uint32_t A 32-bit unsigned integer representing the color in the format
|
||||
* 0x00RRGGBB, where RR is the red component, GG is the green
|
||||
* component, and BB is the blue component. Where each component can be
|
||||
* between 0 - maxBrightness
|
||||
*/
|
||||
uint32_t normalizeColor(uint32_t color, uint8_t maxBrigthness=maxBrightness);
|
||||
};
|
||||
|
||||
#endif //MultiColorLight_h
|
Reference in New Issue
Block a user