Added borg
This commit is contained in:
parent
f02d9bf938
commit
3d34021a10
92
School/borg/borg.h
Normal file
92
School/borg/borg.h
Normal file
@ -0,0 +1,92 @@
|
||||
#ifndef borg_h
|
||||
#define borg_h
|
||||
|
||||
#include "Arduino.h"
|
||||
#include <FastLED.h>
|
||||
|
||||
struct LEDSelect {
|
||||
byte side;
|
||||
byte column;
|
||||
byte row;
|
||||
};
|
||||
|
||||
// Decodes side, column, row into n LED
|
||||
int decodeLED(LEDSelect selection);
|
||||
bool setColor(LEDSelect selection, CRGB* leds);
|
||||
bool updateColor(LEDSelect selection, CRGB* leds);
|
||||
|
||||
int decodeLED(LEDSelect selection) {
|
||||
return 9 * selection.side + 3 * selection.row + selection.column;
|
||||
}
|
||||
|
||||
bool setColor(LEDSelect selection, CRGB color, CRGB* leds) {
|
||||
if (selection.side == 255) {
|
||||
return false;
|
||||
}
|
||||
if (selection.column == 255 && selection.row == 255) {
|
||||
for (byte n = 0; n < 9; n++) {
|
||||
leds[selection.side * 9 + n] = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (selection.column == 255 && selection.row != 255) {
|
||||
for (byte n = 0; n < 3; n++) {
|
||||
leds[decodeLED({ selection.side, n, selection.row })] = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (selection.column != 255 && selection.row == 255) {
|
||||
for (byte n = 0; n < 3; n++) {
|
||||
leds[decodeLED({ selection.side, selection.column, n })] = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (selection.column != 255 && selection.row != 255) {
|
||||
leds[decodeLED(selection)] = color;
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool updateColor(LEDSelect selection, CRGB color, CRGB* leds) {
|
||||
if (selection.side == 255) {
|
||||
return false;
|
||||
}
|
||||
if (selection.column == 255 && selection.row == 255) {
|
||||
for (int n = 0; n < 9; n++) {
|
||||
CRGB* led = &leds[selection.side * 9 + n];
|
||||
if (*led != (CRGB)0x000000)*led = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (selection.column == 255 && selection.row != 255) {
|
||||
for (int n = 0; n < 3; n++) {
|
||||
CRGB* led = &leds[decodeLED({ selection.side, n, selection.row })];
|
||||
if (*led != (CRGB)0x000000)*led = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (selection.column != 255 && selection.row == 255) {
|
||||
for (int n = 0; n < 3; n++) {
|
||||
CRGB* led = &leds[decodeLED({ selection.side, selection.column, n })];
|
||||
if (*led != (CRGB)0x000000)*led = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else if (selection.column != 255 && selection.row != 255) {
|
||||
CRGB* led = &leds[decodeLED(selection)];
|
||||
if (*led != (CRGB)0x000000) {
|
||||
*led = color;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user