#pragma once #include #include #include #include class IRLight: public HALightColorTemperatureBrightnessController { private: bool state; short brightness; byte color_temp; IRsend *irsend; const uint16_t RDOn[67] = { 9080,4270, 680,470, 680,420, 680,420, 680,470, 680,420, 680,420, 680,420, 730,1470, 730,1520, 680,1520, 730,1470, 730,1470, 730,1520, 680,1520, 730,1470, 730,420, 680,1520, 730,420, 680,420, 680,420, 730,420, 680,420, 680,420, 730,420, 680,420, 680,1520, 680,1520, 730,1470, 730,1470, 730,1520, 730,1470, 730,1470, 730}; const uint16_t RDOff[67] = { 9030,4320, 630,470, 680,420, 680,470, 630,470, 680,420, 680,470, 630,470, 680,1520, 680,1570, 630,1570, 630,1570, 680,1520, 680,1570, 630,1570, 680,1520, 680,470, 630,470, 680,1520, 680,370, 730,1570, 630,1570, 680,420, 680,470, 630,470, 680,1520, 680,470, 630,1570, 680,420, 680,470, 630,1570, 680,1520, 680,1570, 630}; const uint16_t RDButtonCenter[67] = { 9030, 4320, 680, 470, 630, 470, 680, 420, 680, 470, 630, 470, 680, 420, 680, 470, 630, 1570, 680, 1520, 680, 1520, 680, 1520, 730, 1520, 680, 1520, 680, 1520, 680, 1570, 680, 420, 680, 1520, 680, 470, 680, 1520, 680, 470, 630, 470, 680, 420, 680, 470, 630, 470, 630, 470, 680, 1520, 680, 470, 680, 1520, 630, 1570, 680, 1520, 680, 1570, 680, 1520, 680}; const uint16_t RDBrightnessUp[67] = { 9080,4270, 730,420, 680,420, 680,420, 730,420, 680,420, 680,420, 730,420, 680,1520, 680,1520, 730,1470, 730,1470, 730,1520, 680,1520, 730,1470, 730,1520, 680,420, 680,470, 580,1620, 580,520, 630,520, 580,1620, 580,520, 630,520, 580,520, 630,1570, 580,570, 580,1570, 630,1620, 630,520, 580,1570, 730,1520, 680,1520, 730}; const uint16_t RDBrightnessDown[67] = { 9030, 4320, 630, 520, 630, 470, 630, 470, 630, 520, 630, 470, 630, 470, 630, 520, 630, 1570, 630, 1570, 630, 1620, 630, 1570, 630, 1570, 630, 1620, 630, 1570, 630, 1570, 630, 470, 680, 470, 630, 1570, 630, 1570, 680, 1570, 630, 1570, 630, 470, 680, 470, 630, 470, 630, 1570, 680, 470, 630, 470, 630, 470, 680, 470, 630, 1570, 630, 1570, 680, 1570, 630}; const uint16_t RDButtonA[67] = {8980,4370, 630,470, 680,470, 630,470, 630,470, 630,520, 630,470, 630,470, 630,1620, 630,1570, 630,1620, 580,1570, 630,1620, 630,1570, 630,1570, 630,1570, 680,470, 630,1570, 630,1570, 630,1620, 630,470, 630,470, 630,470, 680,470, 630,470, 630,470, 680,470, 630,470, 630,1570, 630,1620, 630,1570, 630,1570, 630,1570, 630}; const uint16_t RDButtonB[67] = {9030,4320, 630,520, 580,520, 630,470, 630,470, 680,470, 580,520, 630,470, 680,1570, 630,1570, 630,1570, 630,1570, 630,1620, 580,1620, 630,1570, 630,1620, 580,520, 580,520, 630,470, 680,470, 630,1570, 630,470, 630,520, 580,520, 630,470, 630,1620, 630,1570, 630,1570, 630,470, 680,1570, 630,1570, 630,1570, 630,1570, 680}; public: explicit IRLight(int pin); explicit IRLight(IRsend *irsend); void setState(bool state); bool getState(); void on(); void off(); void setBrightness(int brightness); int getBrightness(); void setColorTemperature(int color); int getColorTemperature(); void brightnessUp(); void brightnessDown(); int getBrightnessScale(); void begin(); ~IRLight(); };