diff --git a/acrealio/IoBoard.cpp b/acrealio/IoBoard.cpp index 9ec71ef..d3b9184 100644 --- a/acrealio/IoBoard.cpp +++ b/acrealio/IoBoard.cpp @@ -1,9 +1,7 @@ #include "Arduino.h" #include "IoBoard.h" -#include "SoftPWMRGB.h" byte lightPin[] = {LT_START, LT_A, LT_B, LT_C, LT_D, LT_FXL, LT_FXR}; -SoftPWMRGB LED6(LED6_R, LED6_G, LED6_B); //contructor IoBoard::IoBoard(char* rCode) @@ -85,6 +83,8 @@ void IoBoard::init() keysLights = 0x00; test =0; + LED6.setPins(LED6_R, LED6_G, LED6_B); + valLED6_R = 0; valLED6_G = 0; valLED6_B = 0; diff --git a/acrealio/IoBoard.h b/acrealio/IoBoard.h index 9348500..92a00c9 100644 --- a/acrealio/IoBoard.h +++ b/acrealio/IoBoard.h @@ -3,8 +3,7 @@ #include "Arduino.h" #include "Node.h" - - +#include "SoftPWMRGB.h" class IoBoard: public Node { @@ -27,6 +26,8 @@ private: byte volRState; unsigned int volL; byte volLState; + // Software PWM RGB light + SoftPWMRGB LED6; // Values for the software PWM RGB light int valLED6_R; int valLED6_G; diff --git a/acrealio/LedBoard.cpp b/acrealio/LedBoard.cpp index 11d52e3..7734803 100644 --- a/acrealio/LedBoard.cpp +++ b/acrealio/LedBoard.cpp @@ -1,7 +1,6 @@ #include "Arduino.h" #include "LedBoard.h" - //contructor LedBoard::LedBoard(char* rCode) { @@ -12,6 +11,12 @@ LedBoard::LedBoard(char* rCode) void LedBoard::init() { + LED6.setPins(LED6_R, LED6_G, LED6_B); + + valLED6_R = 0; + valLED6_G = 0; + valLED6_B = 0; + memset(ledStatus, 0, 18); pinMode(LED1_R, OUTPUT); pinMode(LED1_G, OUTPUT); @@ -22,10 +27,21 @@ void LedBoard::init() pinMode(LED3_R, OUTPUT); pinMode(LED3_G, OUTPUT); pinMode(LED3_B, OUTPUT); + pinMode(LED4_R, OUTPUT); + pinMode(LED4_G, OUTPUT); + pinMode(LED4_B, OUTPUT); + pinMode(LED5_R, OUTPUT); + pinMode(LED5_G, OUTPUT); + pinMode(LED5_B, OUTPUT); + pinMode(LED6_R, OUTPUT); + pinMode(LED6_G, OUTPUT); + pinMode(LED6_B, OUTPUT); } void LedBoard::update() { + // Update the software PWM RGB light + LED6.setPWM(valLED6_R, valLED6_G, valLED6_B); } @@ -69,26 +85,29 @@ short LedBoard::processRequest(byte* request, byte* answer) if (request[4] == 18) memcpy(ledStatus, request+5, 18); //save led colors - analogWrite(LED1_R,ledStatus[6]); - analogWrite(LED1_G,ledStatus[7]); - analogWrite(LED1_B,ledStatus[8]); - analogWrite(LED2_R,ledStatus[0]); - analogWrite(LED2_G,ledStatus[1]); - analogWrite(LED2_B,ledStatus[2]); - analogWrite(LED3_R,ledStatus[9]); - analogWrite(LED3_G,ledStatus[10]); - analogWrite(LED3_B,ledStatus[11]); - + analogWrite(LED1_R,ledStatus[0]); + analogWrite(LED1_G,ledStatus[1]); + analogWrite(LED1_B,ledStatus[2]); + analogWrite(LED2_R,ledStatus[12]); + analogWrite(LED2_G,ledStatus[13]); + analogWrite(LED2_B,ledStatus[14]); + analogWrite(LED3_R,ledStatus[3]); + analogWrite(LED3_G,ledStatus[4]); + analogWrite(LED3_B,ledStatus[5]); + analogWrite(LED4_R,ledStatus[6]); + analogWrite(LED4_G,ledStatus[7]); + analogWrite(LED4_B,ledStatus[8]); + analogWrite(LED5_R,ledStatus[9]); + analogWrite(LED5_G,ledStatus[10]); + analogWrite(LED5_B,ledStatus[11]); + // Get the requested values for the software PWM RGB light + valLED6_R = ledStatus[15]; + valLED6_G = ledStatus[16]; + valLED6_B = ledStatus[17]; answer[4] = 1; answer[5] = 0x00; break; - - - } - - - } diff --git a/acrealio/LedBoard.h b/acrealio/LedBoard.h index 4b3e108..5074abb 100644 --- a/acrealio/LedBoard.h +++ b/acrealio/LedBoard.h @@ -3,6 +3,7 @@ #include "Arduino.h" #include "Node.h" +#include "SoftPWMRGB.h" class LedBoard: public Node { @@ -16,7 +17,12 @@ public: private: byte ledStatus[18]; - + // Software PWM RGB light + SoftPWMRGB LED6; + // Values for the software PWM RGB light + int valLED6_R; + int valLED6_G; + int valLED6_B; }; #endif diff --git a/acrealio/SoftPWMRGB.cpp b/acrealio/SoftPWMRGB.cpp index 4abdf58..a90b5ac 100644 --- a/acrealio/SoftPWMRGB.cpp +++ b/acrealio/SoftPWMRGB.cpp @@ -1,14 +1,10 @@ #include "Arduino.h" #include "SoftPWMRGB.h" -SoftPWMRGB::SoftPWMRGB(int pinR, int pinG, int pinB) +SoftPWMRGB::SoftPWMRGB() { period = 2000; // Period set to 2000us to obtain a 500Hz signal) - pin[0] = pinR; - pin[1] = pinG; - pin[2] = pinB; - for(int i=0;i<3;i++) { val[i] = 0; @@ -20,6 +16,13 @@ SoftPWMRGB::SoftPWMRGB(int pinR, int pinG, int pinB) } } +void SoftPWMRGB::setPins(int pinR, int pinG, int pinB) +{ + pin[0] = pinR; + pin[1] = pinG; + pin[2] = pinB; +} + void SoftPWMRGB::setPWM(int valR, int valG, int valB) { unsigned long currentMicros = micros(); // Get the current time diff --git a/acrealio/SoftPWMRGB.h b/acrealio/SoftPWMRGB.h index 79ddb6b..fbb9b0f 100644 --- a/acrealio/SoftPWMRGB.h +++ b/acrealio/SoftPWMRGB.h @@ -4,7 +4,8 @@ class SoftPWMRGB { public: - SoftPWMRGB(int pinR, int pinG, int pinB); + SoftPWMRGB(); + void setPins(int pinR, int pinG, int pinB); void setPWM(int valR, int valG, int valB); // Call this function in a loop to be sure that LED states are updated private: