2013-09-07 10:46:05 -04:00
|
|
|
#include "Arduino.h"
|
|
|
|
|
#include "LedBoard.h"
|
|
|
|
|
|
|
|
|
|
//contructor
|
|
|
|
|
LedBoard::LedBoard(char* rCode)
|
|
|
|
|
{
|
2017-01-25 15:38:40 -05:00
|
|
|
byte rType[] = {0x04, 0x01, 0x00, 0x00};
|
|
|
|
|
byte rVersion[] = {0x01, 0x00, 0x00};
|
2017-01-25 15:59:19 -05:00
|
|
|
setVersion(rType, 0x00, rVersion, rCode);
|
2013-09-07 10:46:05 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LedBoard::init()
|
|
|
|
|
{
|
2017-04-23 10:17:27 -04:00
|
|
|
LED6.setPins(LED6_R, LED6_G, LED6_B);
|
|
|
|
|
|
|
|
|
|
valLED6_R = 0;
|
|
|
|
|
valLED6_G = 0;
|
|
|
|
|
valLED6_B = 0;
|
|
|
|
|
|
2017-01-25 15:59:19 -05:00
|
|
|
memset(ledStatus, 0, 18);
|
|
|
|
|
pinMode(LED1_R, OUTPUT);
|
|
|
|
|
pinMode(LED1_G, OUTPUT);
|
|
|
|
|
pinMode(LED1_B, OUTPUT);
|
|
|
|
|
pinMode(LED2_R, OUTPUT);
|
|
|
|
|
pinMode(LED2_G, OUTPUT);
|
|
|
|
|
pinMode(LED2_B, OUTPUT);
|
|
|
|
|
pinMode(LED3_R, OUTPUT);
|
|
|
|
|
pinMode(LED3_G, OUTPUT);
|
|
|
|
|
pinMode(LED3_B, OUTPUT);
|
2017-04-23 10:17:27 -04:00
|
|
|
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);
|
2013-09-07 10:46:05 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void LedBoard::update()
|
|
|
|
|
{
|
2017-04-23 10:17:27 -04:00
|
|
|
// Update the software PWM RGB light
|
|
|
|
|
LED6.setPWM(valLED6_R, valLED6_G, valLED6_B);
|
2013-09-07 10:46:05 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
short LedBoard::processRequest(byte* request, byte* answer)
|
2017-01-25 15:59:19 -05:00
|
|
|
{
|
|
|
|
|
answer[0] = request[0] | 0x80; // reader id
|
|
|
|
|
answer[1] = request[1]; // ?
|
|
|
|
|
answer[2] = request[2]; // command
|
|
|
|
|
answer[3] = request[3]; // paquet id
|
|
|
|
|
answer[4] = 0; // data length
|
|
|
|
|
|
|
|
|
|
switch (answer[2]) // switch on the command
|
|
|
|
|
{
|
|
|
|
|
//
|
|
|
|
|
// get version
|
2013-09-07 10:46:05 -04:00
|
|
|
case 0x02:
|
2017-01-25 15:59:19 -05:00
|
|
|
answer[4] = 0x2C;
|
|
|
|
|
memcpy(answer+5, getVersion(), 0x2C);
|
|
|
|
|
break;
|
2013-09-07 10:46:05 -04:00
|
|
|
|
2017-01-25 15:59:19 -05:00
|
|
|
//
|
|
|
|
|
// init?
|
2013-09-07 10:46:05 -04:00
|
|
|
case 0x00:
|
|
|
|
|
case 0x03:
|
|
|
|
|
case 0x16:
|
|
|
|
|
case 0x20:
|
|
|
|
|
case 0x30:
|
2017-01-25 15:59:19 -05:00
|
|
|
answer[4] = 1;
|
|
|
|
|
answer[5] = 0x00;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 0x22: //set leds color (for jubeat ledboard)
|
2013-09-07 10:46:05 -04:00
|
|
|
|
|
|
|
|
//byte 0-2 front RGB
|
|
|
|
|
//byte 3-5 top RGB
|
|
|
|
|
//byte 6-8 left RGB
|
|
|
|
|
//byte 9-11 right
|
|
|
|
|
//byte 12-14 title RGB
|
|
|
|
|
//byte 15-17 woofer
|
2017-01-25 15:59:19 -05:00
|
|
|
|
|
|
|
|
if (request[4] == 18)
|
|
|
|
|
memcpy(ledStatus, request+5, 18); //save led colors
|
|
|
|
|
|
2017-04-23 10:17:27 -04:00
|
|
|
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];
|
2017-01-25 15:59:19 -05:00
|
|
|
|
|
|
|
|
answer[4] = 1;
|
|
|
|
|
answer[5] = 0x00;
|
|
|
|
|
break;
|
2013-09-07 10:46:05 -04:00
|
|
|
}
|
|
|
|
|
}
|
2017-01-25 15:59:19 -05:00
|
|
|
|