Tuesday, September 8, 2015

Matt Justice RYB led controller Arduino code

//Matt Justice RYB led controller

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}


int rr = 255;
int gg = 255;
int bb = 255;
int red = 9;
int green = 10;
int blue = 11;



// the loop routine runs over and over again forever:
void loop() {

  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);


  int sensorValue = analogRead(A0);
  float volt = sensorValue * (360 / 1024.0);

  if (volt < 60) {
    rr = 0;
  }
  if (volt >= 120 && volt <= 240 ) {
    rr = 255;
  }
  if (volt >= 300) {
    rr = 0;
  }
  if (volt >= 60 && volt <= 180) {
    gg = 0;
  }
  if (volt >= 240 ) {
    gg = 255;
  }
  if (volt < 120 ) {
    bb = 255;
  }
  if (volt >= 180 && volt <= 300) {
    bb = 0;
  }

  // linear color change

  if (volt < 60 ) {
    gg = (255 / 60) * volt;
    gg = 255 - gg;
    gg = abs(gg);
  }

  if (volt >= 120 && volt <= 180) {
    bb = (255 / 60) * (volt - 120);
    bb = 255 - bb;
    bb = abs(bb);
  }

  if (volt >= 240 && volt <= 300) {
    rr = (255 / 60) * (volt - 240);
    rr = 255 - rr;
    rr = abs(rr);
  }

  if (volt >= 180 && volt <= 240) {
    gg = -1 * ((255 / 60) * (volt - 180));
    gg = 255 - gg;
    gg = abs(gg);
  }

  if (volt >= 60 && volt <= 120) {
    rr = -1 * ((255 / 60) * (volt - 60));
    rr = 255 - rr;
    rr = abs(rr);
  }

  if (volt >= 300 && volt <= 360) {
    bb = -1 * ((255 / 60) * (volt - 300));
    bb = 255 - bb;
    bb = abs(bb);
  }

  analogWrite(red, rr);
  analogWrite(green, gg);
  analogWrite(blue, bb);


  // Serial.println(volt);
  // Serial.println(rr);
  // Serial.println(gg);
  // Serial.println(bb);

}





No comments:

Post a Comment