2017-03-23 18:45:29 +00:00
|
|
|
#ifndef __Stairs
|
|
|
|
#define __Stairs
|
|
|
|
|
|
|
|
#include "components/PCA9685.h"
|
2017-03-27 20:24:05 +00:00
|
|
|
#include "config.h"
|
2018-01-01 18:56:07 +00:00
|
|
|
#include "mode.h"
|
2017-03-27 20:24:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
struct Range
|
|
|
|
{
|
|
|
|
uint16_t start;
|
|
|
|
uint16_t end;
|
|
|
|
};
|
|
|
|
|
2017-03-23 18:45:29 +00:00
|
|
|
|
|
|
|
class Stairs : public IStairs
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
PCA9685* pwmDriver;
|
|
|
|
|
2017-03-27 20:24:05 +00:00
|
|
|
bool useScaling;
|
2018-01-01 18:56:07 +00:00
|
|
|
Range ranges[16];
|
2017-03-27 20:24:05 +00:00
|
|
|
|
2017-03-24 22:04:58 +00:00
|
|
|
protected:
|
2017-03-27 20:24:05 +00:00
|
|
|
void readRange();
|
|
|
|
void writeRange();
|
|
|
|
|
|
|
|
uint16_t getPWMValue(uint8_t step, uint16_t brightness);
|
2017-03-24 22:04:58 +00:00
|
|
|
|
2017-03-23 18:45:29 +00:00
|
|
|
public:
|
|
|
|
void init(PCA9685* pwmDriver);
|
|
|
|
|
|
|
|
uint8_t getCount();
|
2017-03-24 22:04:58 +00:00
|
|
|
void set(uint8_t step, uint16_t brightness);
|
|
|
|
void setAll(uint16_t brightness);
|
2017-03-27 20:24:05 +00:00
|
|
|
|
|
|
|
void getRange(Stream* stream);
|
|
|
|
void setRange(uint8_t* data);
|
2017-03-23 18:45:29 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|