Lab 2

albert_tjoeng's picture

 

/*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
}
 
teal color
0
Your rating: None