char buffer[18]; int rPin = 2; int gPin = 3; int yPin = 4; void setup() { Serial.begin(9600); Serial.flush(); pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(yPin, OUTPUT); } void loop() { if (Serial.available() > 0) { int index=0; delay(100); // let the buffer fill up int numChar = Serial.available(); if (numChar>15) { numChar=15; } while (numChar--) { buffer[index++] = Serial.read(); } splitString(buffer); } } void splitString(char* data) { Serial.print("Data entered: "); Serial.println(data); char* parameter; parameter = strtok (data, " ,"); // split while (parameter != NULL) { setLED(parameter); parameter = strtok (NULL, " ,"); } // Clear the text and serial buffers for (int x=0; x<16; x++) { buffer[x]='\0'; } Serial.flush(); } void setLED(char* data) { int Ans = strtol(data+1, NULL, 10); // decimal int Ans = constrain(Ans,0,255); // limit if ((data[0] == 'r') || (data[0] == 'R')) { analogWrite(rPin, Ans); Serial.print("Red is set to: "); } if ((data[0] == 'g') || (data[0] == 'G')) { analogWrite(gPin, Ans); Serial.print("Green is set to: "); } if ((data[0] == 'y') || (data[0] == 'Y')) { analogWrite(yPin, Ans); Serial.print("Yellow is set to: "); } Serial.println(Ans); }