Update borg.h

This commit is contained in:
Daniel Løvbrøtte Olsen 2017-03-23 08:48:30 +01:00 committed by GitHub
parent 0d2b1b7a79
commit 2d79caa413

View File

@ -5,9 +5,9 @@
#include <FastLED.h> #include <FastLED.h>
struct LEDSelect { struct LEDSelect {
byte side; byte side;
byte column; byte column;
byte row; byte row;
}; };
// Decodes side, column, row into n LED // Decodes side, column, row into n LED
@ -32,109 +32,109 @@ void printError(CRGB color, CRGB* leds);
int decodeLED(LEDSelect selection) { int decodeLED(LEDSelect selection) {
return 9 * selection.side + 3 * selection.row + selection.column; return 9 * selection.side + 3 * selection.row + selection.column;
} }
void encodeLED(int n, LEDSelect* Result) { void encodeLED(int n, LEDSelect* Result) {
Result->side = n / 9; Result->side = n / 9;
Result->column = n % 9 / 3; Result->column = n % 9 / 3;
Result->row = n % 9 % 3; Result->row = n % 9 % 3;
} }
bool setColor(LEDSelect selection, CRGB color, CRGB* leds) { bool setColor(LEDSelect selection, CRGB color, CRGB* leds) {
if (selection.side == 255) { if (selection.side == 255) {
return false; return false;
} }
if (selection.column == 255 && selection.row == 255) { if (selection.column == 255 && selection.row == 255) {
for (byte n = 0; n < 9; n++) { for (byte n = 0; n < 9; n++) {
leds[selection.side * 9 + n] = color; leds[selection.side * 9 + n] = color;
} }
return true; return true;
} }
else if (selection.column == 255 && selection.row != 255) { else if (selection.column == 255 && selection.row != 255) {
for (byte n = 0; n < 3; n++) { for (byte n = 0; n < 3; n++) {
leds[decodeLED({ selection.side, n, selection.row })] = color; leds[decodeLED({ selection.side, n, selection.row })] = color;
} }
return true; return true;
} }
else if (selection.column != 255 && selection.row == 255) { else if (selection.column != 255 && selection.row == 255) {
for (byte n = 0; n < 3; n++) { for (byte n = 0; n < 3; n++) {
leds[decodeLED({ selection.side, selection.column, n })] = color; leds[decodeLED({ selection.side, selection.column, n })] = color;
} }
return true; return true;
} }
else if (selection.column != 255 && selection.row != 255) { else if (selection.column != 255 && selection.row != 255) {
leds[decodeLED(selection)] = color; leds[decodeLED(selection)] = color;
return true; return true;
} }
else { else {
return false; return false;
} }
} }
bool updateColors(LEDSelect selection, CRGB color, CRGB* leds) { bool updateColors(LEDSelect selection, CRGB color, CRGB* leds) {
if (selection.side == 255) { if (selection.side == 255) {
return false; return false;
} }
if (selection.column == 255 && selection.row == 255) { if (selection.column == 255 && selection.row == 255) {
for (int n = 0; n < 9; n++) { for (int n = 0; n < 9; n++) {
CRGB* led = &leds[selection.side * 9 + n]; CRGB* led = &leds[selection.side * 9 + n];
if (*led != (CRGB) 0x000000) { if (*led != (CRGB) 0x000000) {
*led = color; *led = color;
} }
} }
return true; return true;
} }
else if (selection.column == 255 && selection.row != 255) { else if (selection.column == 255 && selection.row != 255) {
for (int n = 0; n < 3; n++) { for (int n = 0; n < 3; n++) {
CRGB* led = &leds[decodeLED({ selection.side, n, selection.row })]; CRGB* led = &leds[decodeLED({ selection.side, n, selection.row })];
if (*led != (CRGB)0x000000) { if (*led != (CRGB)0x000000) {
*led = color; *led = color;
} }
} }
return true; return true;
} }
else if (selection.column != 255 && selection.row == 255) { else if (selection.column != 255 && selection.row == 255) {
for (int n = 0; n < 3; n++) { for (int n = 0; n < 3; n++) {
CRGB* led = &leds[decodeLED({ selection.side, selection.column, n })]; CRGB* led = &leds[decodeLED({ selection.side, selection.column, n })];
if (*led != (CRGB) 0x000000) { if (*led != (CRGB) 0x000000) {
*led = color; *led = color;
} }
} }
return true; return true;
} }
else if (selection.column != 255 && selection.row != 255) { else if (selection.column != 255 && selection.row != 255) {
CRGB* led = &leds[decodeLED(selection)]; CRGB* led = &leds[decodeLED(selection)];
if (*led != (CRGB) 0x000000) { if (*led != (CRGB) 0x000000) {
*led = color; *led = color;
} }
return true; return true;
} }
else { else {
return false; return false;
} }
} }
bool mirror(byte side, CRGB* leds) { bool mirror(byte side, CRGB* leds) {
/*TODO: figure out memory structure, /*TODO: figure out memory structure,
copy the nine leds to the the different memory parts, so it the text is displayed on all sides. copy the nine leds to the the different memory parts, so it the text is displayed on all sides.
should probably use some form of modulo should probably use some form of modulo
*/ */
for(int i = 0; i < sizeof(leds) / sizeof(CRGB); i+=9) { for(int i = 0; i < sizeof(leds) / sizeof(CRGB); i+=9) {
memcpy(&leds[i], &leds[decodeLED({side, 0, 0})], sizeof(CRGB) * 9); memcpy(&leds[i], &leds[decodeLED({side, 0, 0})], sizeof(CRGB) * 9);
} }
} }
void printError(CRGB color, CRGB* leds) { void printError(CRGB color, CRGB* leds) {
setColor({0, 255, 255}, (CRGB) color, leds); setColor({0, 255, 255}, (CRGB) color, leds);
setColor({0, 0, 1}, (CRGB) 0, leds); setColor({0, 0, 1}, (CRGB) 0, leds);
setColor({0, 1, 0}, (CRGB) 0, leds); setColor({0, 1, 0}, (CRGB) 0, leds);
setColor({0, 1, 2}, (CRGB) 0, leds); setColor({0, 1, 2}, (CRGB) 0, leds);
setColor({0, 2, 1}, (CRGB) 0, leds); setColor({0, 2, 1}, (CRGB) 0, leds);
mirror(0, leds); mirror(0, leds);
} }
#endif #endif