initial push
This commit is contained in:
222
echo-led-controller/echo-led-strip.ino
Normal file
222
echo-led-controller/echo-led-strip.ino
Normal file
@@ -0,0 +1,222 @@
|
||||
#define ledStripPinR 5
|
||||
#define ledStripPinG 6
|
||||
#define ledStripPinB 9
|
||||
|
||||
int currentLedR = 0;
|
||||
int currentLedG = 0;
|
||||
int currentLedB = 0;
|
||||
|
||||
int targetLedR = 0;
|
||||
int targetLedG = 0;
|
||||
int targetLedB = 0;
|
||||
|
||||
int fadeDelay = 5;
|
||||
|
||||
// Modes:
|
||||
// 0 = Off
|
||||
// 1 = Static
|
||||
// 2 = Fade
|
||||
// 3 = Dynamic
|
||||
int currentMode = 2;
|
||||
|
||||
void handleLedStrip () {
|
||||
|
||||
// Check if we need to handle target colors
|
||||
if (currentLedR == targetLedR && currentLedG == targetLedG && currentLedB == targetLedB) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Check which mode we are in, and change values based on that
|
||||
if (currentMode == 1) {
|
||||
// Static Mode
|
||||
analogWrite(ledStripPinR, targetLedR);
|
||||
analogWrite(ledStripPinG, targetLedG);
|
||||
analogWrite(ledStripPinB, targetLedB);
|
||||
}
|
||||
|
||||
if (currentMode == 2) {
|
||||
// Fade Mode
|
||||
|
||||
//
|
||||
// Red
|
||||
//
|
||||
|
||||
// Target val is greater, add to current led value
|
||||
if (targetLedR > currentLedR) {
|
||||
currentLedR = currentLedR + 1;
|
||||
}
|
||||
|
||||
// Target val is smaller, remove from current led value
|
||||
if (targetLedR < currentLedR) {
|
||||
currentLedR = currentLedR - 1;
|
||||
}
|
||||
|
||||
//
|
||||
// Green
|
||||
//
|
||||
|
||||
// Target val is greater, add to current led value
|
||||
if (targetLedG > currentLedG) {
|
||||
currentLedG = currentLedG + 1;
|
||||
}
|
||||
|
||||
// Target val is smaller, remove from current led value
|
||||
if (targetLedG < currentLedG) {
|
||||
currentLedG = currentLedG - 1;
|
||||
}
|
||||
|
||||
//
|
||||
// Blue
|
||||
//
|
||||
|
||||
// Target val is greater, add to current led value
|
||||
if (targetLedB > currentLedB) {
|
||||
currentLedB = currentLedB + 1;
|
||||
}
|
||||
|
||||
// Target val is smaller, remove from current led value
|
||||
if (targetLedB < currentLedB) {
|
||||
currentLedB = currentLedB - 1;
|
||||
}
|
||||
|
||||
analogWrite(ledStripPinR, currentLedR);
|
||||
analogWrite(ledStripPinG, currentLedG);
|
||||
analogWrite(ledStripPinB, currentLedB);
|
||||
|
||||
if (currentLedR == targetLedR && currentLedG == targetLedG && currentLedB == targetLedB) {
|
||||
char deviceUUID[10] = "34gr-54jf";
|
||||
char command[20] = "target_reached";
|
||||
char data[69] = "0";
|
||||
sendSerialCommand(deviceUUID, command, data);
|
||||
}
|
||||
|
||||
delay(fadeDelay);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void ledStripCommand(char* deviceUUID, char* command, char* data) {
|
||||
if (strcmp(command, "clear_color") == 0) {
|
||||
targetLedR = 0;
|
||||
targetLedG = 0;
|
||||
targetLedB = 0;
|
||||
}
|
||||
|
||||
if (strcmp(command, "set_color") == 0) {
|
||||
setColor(data);
|
||||
}
|
||||
|
||||
if (strcmp(command, "set_mode") == 0) {
|
||||
setMode(data);
|
||||
}
|
||||
|
||||
if (strcmp(command, "set_mode") == 0) {
|
||||
setMode(data);
|
||||
}
|
||||
|
||||
if (strcmp(command, "set_fade_delay") == 0) {
|
||||
setFadeDelay(data);
|
||||
}
|
||||
}
|
||||
|
||||
void setColor(char* dataBuffer) {
|
||||
char * strtokIndex;
|
||||
char rValueRaw[4];
|
||||
char gValueRaw[4];
|
||||
char bValueRaw[4];
|
||||
|
||||
// Get Red Value
|
||||
strtokIndex = strtok(dataBuffer, ",");
|
||||
strcpy(rValueRaw, strtokIndex);
|
||||
|
||||
// Get Green Value
|
||||
strtokIndex = strtok(NULL, ",");
|
||||
strcpy(gValueRaw, strtokIndex);
|
||||
|
||||
// Get Blue Value
|
||||
strtokIndex = strtok(NULL, ",");
|
||||
strcpy(bValueRaw, strtokIndex);
|
||||
|
||||
targetLedR = atoi(rValueRaw);
|
||||
targetLedG = atoi(gValueRaw);
|
||||
targetLedB = atoi(bValueRaw);
|
||||
}
|
||||
|
||||
void setMode(char* dataBuffer) {
|
||||
if (strcmp(dataBuffer, "static") == 0) {
|
||||
currentMode = 1;
|
||||
}
|
||||
|
||||
if (strcmp(dataBuffer, "fade") == 0) {
|
||||
currentMode = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void setFadeDelay(char* dataBuffer) {
|
||||
fadeDelay = atoi(dataBuffer);
|
||||
}
|
||||
|
||||
void initLedStrip() {
|
||||
|
||||
// Define Pin Outputs
|
||||
pinMode(ledStripPinR, OUTPUT);
|
||||
pinMode(ledStripPinG, OUTPUT);
|
||||
pinMode(ledStripPinB, OUTPUT);
|
||||
|
||||
// Write 0 to all rgbs
|
||||
analogWrite(ledStripPinR, 0);
|
||||
analogWrite(ledStripPinG, 0);
|
||||
analogWrite(ledStripPinB, 0);
|
||||
|
||||
// Loop Each Color
|
||||
//
|
||||
|
||||
// Red
|
||||
for (int colorIndex = 0; colorIndex < 256; colorIndex++) {
|
||||
analogWrite(ledStripPinR, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
for (int colorIndex = 255; colorIndex > -1; colorIndex--) {
|
||||
analogWrite(ledStripPinR, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
// Green
|
||||
for (int colorIndex = 0; colorIndex < 256; colorIndex++) {
|
||||
analogWrite(ledStripPinG, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
for (int colorIndex = 255; colorIndex > -1; colorIndex--) {
|
||||
analogWrite(ledStripPinG, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
// Blue
|
||||
for (int colorIndex = 0; colorIndex < 256; colorIndex++) {
|
||||
analogWrite(ledStripPinB, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
for (int colorIndex = 255; colorIndex > -1; colorIndex--) {
|
||||
analogWrite(ledStripPinB, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
// All
|
||||
for (int colorIndex = 0; colorIndex < 256; colorIndex++) {
|
||||
analogWrite(ledStripPinR, colorIndex);
|
||||
analogWrite(ledStripPinG, colorIndex);
|
||||
analogWrite(ledStripPinB, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
for (int colorIndex = 255; colorIndex > -1; colorIndex--) {
|
||||
analogWrite(ledStripPinR, colorIndex);
|
||||
analogWrite(ledStripPinG, colorIndex);
|
||||
analogWrite(ledStripPinB, colorIndex);
|
||||
delay(3);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user