String incomingString; char incomingByte; int steer_motor[] = {2,3}; int drive_motor[] = {6,7}; // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); //setup the motors pinMode(steer_motor[0], OUTPUT); pinMode(steer_motor[1], OUTPUT); pinMode(drive_motor[0], OUTPUT); pinMode(drive_motor[1], OUTPUT); } void steer_center() { digitalWrite(steer_motor[0], LOW); digitalWrite(steer_motor[1], LOW); } void steer_right() { digitalWrite(steer_motor[0], LOW); digitalWrite(steer_motor[1], HIGH); } void steer_left() { digitalWrite(steer_motor[0], HIGH); digitalWrite(steer_motor[1], LOW); } void drive_stop() { digitalWrite(drive_motor[0], LOW); digitalWrite(drive_motor[1], LOW); } void drive_forward() { digitalWrite(drive_motor[0], HIGH); digitalWrite(drive_motor[1], LOW); } void drive_backward() { digitalWrite(drive_motor[0], LOW); digitalWrite(drive_motor[1], HIGH); } // the loop routine runs over and over again forever: void loop() { //See if there is anything in the serial buffer if(Serial.available() > 0) { //Read a single byte from the buffer incomingByte = (char)Serial.read(); //If the byte is the null terminator symbol, then that is the end of the message if(incomingByte == '\0') { //Repeat to the serial port what you have heard. Serial.println(incomingString); //debugging if(incomingString == "left") steer_left(); else if(incomingString == "right") steer_right(); else if(incomingString == "center") steer_center(); else if(incomingString == "forward") drive_forward(); else if(incomingString == "backward") drive_backward(); else if(incomingString == "stop") drive_stop(); else { steer_center(); drive_stop(); } //Clear everything in the string to be ready for next message incomingString = ""; } else { //Add the incoming character to a string to make a word incomingString += incomingByte; } } }