/*Albert Tjoeng - Lab 2
* ---------------
* Serial commands control the brightness of R,G,B LEDs
*
* Control the RGB values with multiple key presses : 'r', 'g', or 'b'
* For example,pressing ‘r’ 5 times will set the brightness to 50% (or brightness = 127)
* and pressing ‘r’ 10 times will set it to 100% (or brightness = 255)
*
* also can create 3 color : teal, pink and yellow by pressing 't', 'p' or 'y' respectively.
*
* ATJ : Created September 7 2011
*
*/
char colorCode = 'k';
int val = 150;
int redPin = 6; // Red LED, connected to digital pin 9
int greenPin = 5; // Green LED, connected to digital pin 10
int bluePin = 11; // Blue LED, connected to digital pin 11
int redval = 0;
int blueval = 0;
int greenval = 0;
int prevredval = 0;
int prevblueval = 0;
int prevgreenval = 0;
void setup() {
pinMode(redPin, OUTPUT); // sets the pins as output
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
Serial.begin(9600);
analogWrite(redPin, 0); // set them all to mid brightness
analogWrite(greenPin, 0); // set them all to mid brightness
analogWrite(bluePin, 0); // set them all to mid brightness
Serial.println("enter color command (e.g. 'r') :");
}
void loop () {
if (Serial.available() > 0) {
colorCode = Serial.read();
}
if( colorCode == 't' || colorCode == 'p' || colorCode == 'y') {
if (colorCode == 't') {
Serial.print("setting color to teal ");
analogWrite(bluePin, val);
analogWrite(greenPin, val);
analogWrite(redPin, 0);
prevblueval = val;
prevgreenval = val;
prevredval =0;
blueval = val;
greenval = val;
redval =0;
}
else if (colorCode == 'p') {
Serial.print("setting color to pink ");
analogWrite(bluePin, val);
analogWrite(redPin, val);
analogWrite(greenPin, 0);
prevblueval = val;
prevredval = val;
prevgreenval =0;
blueval = val;
redval = val;
greenval =0;
}
else if (colorCode == 'y') {
Serial.print("setting color to yellow ");
analogWrite(greenPin, val);
analogWrite(redPin, val+50);
analogWrite(bluePin, 0);
prevredval = val;
prevgreenval = val;
prevblueval =0;
redval = val;
greenval = val;
blueval =0;
}
Serial.println();
}
if( colorCode == 'r' || colorCode == 'g' || colorCode == 'b' ) {
Serial.print("setting color ");
Serial.print(colorCode);
Serial.print(" to intensify");
Serial.println();
if(colorCode == 'r') {
redval = redval + 25;
if(redval > 251){
redval = 0;}
analogWrite(redPin, redval);
prevredval = redval;
}
else if(colorCode == 'g') {
greenval = greenval + 25;
if(greenval > 255){
greenval = 0;}
analogWrite(greenPin, greenval);
prevgreenval = greenval;
}
else if(colorCode == 'b') {
blueval = blueval + 25;
if(blueval > 251){
blueval = 0;}
analogWrite(bluePin, blueval);
prevblueval = blueval;
}
}
colorCode = 'k';
delay(100); // wait a bit, for serial data
}