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 "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;

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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

View File

@ -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

View File

@ -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: