Init
This commit is contained in:
commit
460a396a21
60
SimpleLed.cpp
Normal file
60
SimpleLed.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include "SimpleLed.h"
|
||||
|
||||
SimpleLed::SimpleLed(int pinRed, int pinGreen, int pinBlue) {
|
||||
this->pin_red = pinRed;
|
||||
this->pin_green = pinGreen;
|
||||
this->pin_blue = pinBlue;
|
||||
}
|
||||
|
||||
void SimpleLed::begin()
|
||||
{
|
||||
pinMode(this->pin_red, OUTPUT);
|
||||
pinMode(this->pin_green, OUTPUT);
|
||||
pinMode(this->pin_blue, OUTPUT);
|
||||
|
||||
this->setColor(color);
|
||||
}
|
||||
|
||||
void SimpleLed::setColor(const Color &color)
|
||||
{
|
||||
this->color.red = color.red;
|
||||
this->color.green = color.green;
|
||||
this->color.blue = color.blue;
|
||||
|
||||
analogWrite(this->pin_red, 255 * color.red);
|
||||
analogWrite(this->pin_green, 255 * color.green);
|
||||
analogWrite(this->pin_blue, 255 * color.blue);
|
||||
}
|
||||
|
||||
void SimpleLed::translateToColor(const Color &color, int duration_millis)
|
||||
{
|
||||
const Color colorStart = {
|
||||
this->color.red,
|
||||
this->color.green,
|
||||
this->color.blue
|
||||
};
|
||||
|
||||
const Color colorDelta = {
|
||||
color.red - this->color.red,
|
||||
color.green - this->color.green,
|
||||
color.blue - this->color.blue
|
||||
};
|
||||
|
||||
long t_start = millis();
|
||||
long t_end = t_start + duration_millis;
|
||||
|
||||
while (millis() < t_end) {
|
||||
float progress = (float)(millis() - t_start) / (float)duration_millis;
|
||||
|
||||
const Color colorCurrent = {
|
||||
colorStart.red + colorDelta.red * progress,
|
||||
colorStart.green + colorDelta.green * progress,
|
||||
colorStart.blue + colorDelta.blue * progress
|
||||
};
|
||||
|
||||
setColor(colorCurrent);
|
||||
}
|
||||
|
||||
setColor(color);
|
||||
}
|
||||
|
30
SimpleLed.h
Normal file
30
SimpleLed.h
Normal file
@ -0,0 +1,30 @@
|
||||
#ifndef SimpleLed_h
|
||||
#define SimpleLed_h
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
typedef struct {
|
||||
float red;
|
||||
float green;
|
||||
float blue;
|
||||
} Color;
|
||||
|
||||
class SimpleLed
|
||||
{
|
||||
int pin_red = 0;
|
||||
int pin_green = 0;
|
||||
int pin_blue = 0;
|
||||
|
||||
Color color = {0.0, 0.0, 0.0};
|
||||
|
||||
public:
|
||||
SimpleLed(int pinRed, int pinGreen, int pinBlue);
|
||||
|
||||
void begin();
|
||||
|
||||
void setColor(const Color &color);
|
||||
|
||||
void translateToColor(const Color &color, int duration_millis);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user