int redPin = 12;
int greenPin = 11;
int bluePin = 10;
char myColor[20];
char buff[20];
char msg[]={"What color LED? "};
byte recvCount = 0;
bool haveColor= false;
unsigned long lastBlink;
int intervalBlink = 250;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Ready");
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
delay(2000);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
Serial.println(msg);
}
void loop() {
// put your main code here, to run repeatedly:
if (Serial.available()){
byte abyte = Serial.read();
if (abyte != 10){
buff[recvCount]=abyte;
recvCount++;
if (recvCount>=sizeof(buff)) recvCount = 0;//??no!!
}else {
memcpy(myColor,buff,sizeof(buff));
haveColor = true;//set flag
recvCount = 0;
memset(buff,0,sizeof(myColor));//empty buff
Serial.println(msg);
}
}
if (strcmp(myColor, "red")==0 || strcmp(myColor, "Red")==0) {
if (millis()-lastBlink>=intervalBlink){
lastBlink = millis();
digitalWrite(redPin, !digitalRead(redPin));
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
}
}
if (strcmp(myColor, "green")==0 || strcmp(myColor, "Green")==0) {
if (millis()-lastBlink>=intervalBlink){
lastBlink = millis();
digitalWrite(greenPin, !digitalRead(greenPin));
digitalWrite(redPin, LOW);
digitalWrite(bluePin, LOW);
}
}
if (strcmp(myColor, "blue")==0 || strcmp(myColor, "Blue")==0) {
if (millis()-lastBlink>=intervalBlink){
lastBlink = millis();
digitalWrite(bluePin, !digitalRead(bluePin));
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
}
}
if (strcmp(myColor, "stop")==0 || strcmp(myColor, "Stop")==0) {
digitalWrite(bluePin,LOW);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
}
}