Add 6th RGB light support for jubeat (untested, but it should work), change the way the SoftPWMRGB class is initialized

main
Mickael Garabello 2017-04-23 16:17:27 +02:00
parent 85b0a02d82
commit e4da7587a6
6 changed files with 58 additions and 28 deletions

View File

@ -1,9 +1,7 @@
#include "Arduino.h" #include "Arduino.h"
#include "IoBoard.h" #include "IoBoard.h"
#include "SoftPWMRGB.h"
byte lightPin[] = {LT_START, LT_A, LT_B, LT_C, LT_D, LT_FXL, LT_FXR}; 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 //contructor
IoBoard::IoBoard(char* rCode) IoBoard::IoBoard(char* rCode)
@ -85,6 +83,8 @@ void IoBoard::init()
keysLights = 0x00; keysLights = 0x00;
test =0; test =0;
LED6.setPins(LED6_R, LED6_G, LED6_B);
valLED6_R = 0; valLED6_R = 0;
valLED6_G = 0; valLED6_G = 0;
valLED6_B = 0; valLED6_B = 0;

View File

@ -3,8 +3,7 @@
#include "Arduino.h" #include "Arduino.h"
#include "Node.h" #include "Node.h"
#include "SoftPWMRGB.h"
class IoBoard: public Node class IoBoard: public Node
{ {
@ -27,6 +26,8 @@ private:
byte volRState; byte volRState;
unsigned int volL; unsigned int volL;
byte volLState; byte volLState;
// Software PWM RGB light
SoftPWMRGB LED6;
// Values for the software PWM RGB light // Values for the software PWM RGB light
int valLED6_R; int valLED6_R;
int valLED6_G; int valLED6_G;

View File

@ -1,7 +1,6 @@
#include "Arduino.h" #include "Arduino.h"
#include "LedBoard.h" #include "LedBoard.h"
//contructor //contructor
LedBoard::LedBoard(char* rCode) LedBoard::LedBoard(char* rCode)
{ {
@ -12,6 +11,12 @@ LedBoard::LedBoard(char* rCode)
void LedBoard::init() void LedBoard::init()
{ {
LED6.setPins(LED6_R, LED6_G, LED6_B);
valLED6_R = 0;
valLED6_G = 0;
valLED6_B = 0;
memset(ledStatus, 0, 18); memset(ledStatus, 0, 18);
pinMode(LED1_R, OUTPUT); pinMode(LED1_R, OUTPUT);
pinMode(LED1_G, OUTPUT); pinMode(LED1_G, OUTPUT);
@ -22,10 +27,21 @@ void LedBoard::init()
pinMode(LED3_R, OUTPUT); pinMode(LED3_R, OUTPUT);
pinMode(LED3_G, OUTPUT); pinMode(LED3_G, OUTPUT);
pinMode(LED3_B, 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() 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) if (request[4] == 18)
memcpy(ledStatus, request+5, 18); //save led colors memcpy(ledStatus, request+5, 18); //save led colors
analogWrite(LED1_R,ledStatus[6]); analogWrite(LED1_R,ledStatus[0]);
analogWrite(LED1_G,ledStatus[7]); analogWrite(LED1_G,ledStatus[1]);
analogWrite(LED1_B,ledStatus[8]); analogWrite(LED1_B,ledStatus[2]);
analogWrite(LED2_R,ledStatus[0]); analogWrite(LED2_R,ledStatus[12]);
analogWrite(LED2_G,ledStatus[1]); analogWrite(LED2_G,ledStatus[13]);
analogWrite(LED2_B,ledStatus[2]); analogWrite(LED2_B,ledStatus[14]);
analogWrite(LED3_R,ledStatus[9]); analogWrite(LED3_R,ledStatus[3]);
analogWrite(LED3_G,ledStatus[10]); analogWrite(LED3_G,ledStatus[4]);
analogWrite(LED3_B,ledStatus[11]); 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[4] = 1;
answer[5] = 0x00; answer[5] = 0x00;
break; break;
} }
} }

View File

@ -3,6 +3,7 @@
#include "Arduino.h" #include "Arduino.h"
#include "Node.h" #include "Node.h"
#include "SoftPWMRGB.h"
class LedBoard: public Node class LedBoard: public Node
{ {
@ -16,7 +17,12 @@ public:
private: private:
byte ledStatus[18]; 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 #endif

View File

@ -1,14 +1,10 @@
#include "Arduino.h" #include "Arduino.h"
#include "SoftPWMRGB.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) 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++) for(int i=0;i<3;i++)
{ {
val[i] = 0; 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) void SoftPWMRGB::setPWM(int valR, int valG, int valB)
{ {
unsigned long currentMicros = micros(); // Get the current time unsigned long currentMicros = micros(); // Get the current time

View File

@ -4,7 +4,8 @@
class SoftPWMRGB class SoftPWMRGB
{ {
public: 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 void setPWM(int valR, int valG, int valB); // Call this function in a loop to be sure that LED states are updated
private: private: