#include //Initialize Libaries Servo myservo; //Initalize Servo object //Adds corresponding variables per each pin for RGB LEDS const int PIN_RED1 = 9; const int PIN_GREEN1 = 10; const int PIN_BLUE1 = 11; const int PIN_RED2 = 7; const int PIN_GREEN2 = 6; const int PIN_BLUE2 = 8; const int PIN_RED3 = 3; const int PIN_GREEN3 = 2; const int PIN_BLUE3 = 4; int red; int green; int blue; // Serial Moniter Initalization String inputString =""; boolean stringComplete = false; // Adds new varibale to setcolor function to allow for precise choice of LED void setColor(int ledNum, int R, int G, int B) { switch(ledNum) { case 1: // LED 1 analogWrite(PIN_RED1, R); analogWrite(PIN_GREEN1, G); analogWrite(PIN_BLUE1, B); break; case 2: // LED 2 analogWrite(PIN_RED2, R); analogWrite(PIN_GREEN2, G); analogWrite(PIN_BLUE2, B); break; case 3: // LED 3 analogWrite(PIN_RED3, R); analogWrite(PIN_GREEN3, G); analogWrite(PIN_BLUE3, B); break; } } void setup() { Serial.begin(9600); //Serial Moniter Setup pinMode(12, OUTPUT); //Sets built in pin for LED inputString.reserve(200); //Attaches pins to each component myservo.write(0); myservo.attach(5); pinMode(PIN_RED1, OUTPUT); pinMode(PIN_GREEN1, OUTPUT); pinMode(PIN_BLUE1, OUTPUT); pinMode(PIN_RED2, OUTPUT); pinMode(PIN_GREEN2, OUTPUT); pinMode(PIN_BLUE2, OUTPUT); pinMode(PIN_RED3, OUTPUT); pinMode(PIN_GREEN3, OUTPUT); pinMode(PIN_BLUE3, OUTPUT); } void loop() { setColor(1, 0, 0, 0); setColor(2, 0, 0, 0); setColor(3, 0, 0, 0); // Serial moniter reading if (Serial.available()) { char inChar = (char)Serial.read(); if (inChar != '\n') { inputString += inChar; } else { stringComplete = true; } } if (stringComplete) { inputString.trim(); } // Input activates a three phase variation if (inputString.equals("b")) { setColor(1, 255, 0, 0); delay(500); setColor(2, 0, 255, 0); delay(500); setColor(3, 0, 0, 255); delay(500); bool led1On = true; bool led2On = true; bool led3On = true; if (led3On && led2On && led1On) { myservo.write(180); led1On = false; led2On = false; led3On = false; delay(2000); myservo.write(0); } delay(500); setColor(1, 0, 0, 0); delay(500); setColor(2, 0, 0, 0); delay(500); setColor(3, 0, 0, 0); delay(500); //Input activates single phase variation } else if (inputString.equals("a")) { setColor(1, 255, 0, 0); bool led1On = true; if (led1On) { delay(500); digitalWrite(12, HIGH); delay(5000); digitalWrite(12, LOW); delay(100); setColor(1, 0, 0, 0); led1On = false; } //clears serial moniter for next line } else { Serial.println(inputString); } inputString = ""; stringComplete = false; }