#include <serialStr.h>
#include <strTools.h>
#include <neoPixel.h>
#include "RGBLED.h"
RGBLED theLED(3,5,6); // Our RGB LED create it by passing in 3 PWM pin numbers R G & B
RGBLED theOtherLED(9,10,11,false); // Another RGB LED but this one is neg common.
serialStr listener; // serialStr does the work of getting commands for us.
neoPixel theNeoPixel(1,2); // Just for fun we'll also have a neoPixel.
void setup() {
colorObj aColor;
Serial.begin(9600); // Fire up serial stuff.
Serial.print("Commands? type three 0..255 values"); // Quick instructions for user.
Serial.println(" sepreated by blanks R G B."); //
listener.setCallback(gotCommand); // When a command arrives, call this function with it.
aColor.setColor(LC_GREEN); // Make up a default color. Start with green..
aColor.blend(&blue,50); // Blend in 50% blue.
theLED.setColor(&aColor);
theOtherLED.setColor(&theLED);
theNeoPixel.begin(); // Fire up the neoPixel.
theNeoPixel.setPixelColor(0,&theLED); // WHAT! You pass in the LED to set the neoPixel?!?
theNeoPixel.show(); // That's right, the RGBLED derives from colorObj. It's a color.
}
void gotCommand(char* inStr) {
int red; // Make life easy. Set up the new color values here.
int green; //
int blue; //
const char delim[] = " \t\n"; // Delimiters for breaking up the inputted commands space, tab, newline.
char* token; // A pointer for saying, your broken off bit starts here.
char* comStr = NULL; // We're going to store a copy of the inputted command string here.
//
red = 0; // If it fails? We'll turn it black/off.
green = 0; //
blue = 0; //
heapStr(&comStr,inStr); // Allocate and save a local copy of our command string.
token = strtok(comStr,delim); // Bust off the first token (number) from the command.
if (token) red = atoi(token); // If we got a token, decode it as an int use it for red.
token = strtok(NULL,delim); // Bust off the next token (number) from the command.
if (token) green = atoi(token); // If we got a token, decode it as an int use it for green.
token = strtok(NULL,delim); // Grab the last token (number) from the command.
if (token) blue = atoi(token); // If we got a token, decode it as an int use it for blue.
freeStr(&comStr); // Recycle the local copy of the command string.
Serial.print("Color set to : "); // Amuse the user with what we are up to.
Serial.print(red);Serial.print("\t"); //
Serial.print(green);Serial.print("\t"); //
Serial.println(blue); //
theLED.setColor(red,green,blue); // Set the RGB LED to the new R G B values.
theOtherLED.setColor(&theLED);
theNeoPixel.setPixelColor(0,&theLED); // Set the neoPixel using the RGB LED as a color object.
theNeoPixel.show(); // Make the neoPixel show it's new color.
}
void loop() { idle(); } // idle() lets the magic happen.