                       // been sent across it.
 }
 
-void loop()
-{
+void loop() {
   // if we get a valid byte, read analog ins:
   if (Serial.available() > 0) {
     // get incoming byte:
     inByte = Serial.read();
-    if(inByte == onMessage){
-      turnOn();
-    }
-    if(inByte == offMessage){
-      turnOff();
-    }
+    handleCommand(inByte);
   }
+//  drive();
+}
+
+void drive() {
+  debug();
+}
+
+void debug() {
+  Serial.print(leftMotorValue);
+  Serial.println(rightMotorValue);
+}
+
+void handleCommand(char inByte) {
+  debug();
+  if(inByte <= 'u' && inByte >= 'a'){
+    Serial.println("aaa");
+    updateLeftMotor(inByte);
+  }
+  if(inByte <= 'U' && inByte >= 'A'){
+    Serial.println("bbb");
+    updateRightMotor(inByte);
+  }
+}
+
+void updateLeftMotor(char value){
+  leftMotorValue = leftMotorValueMapped(value);
+}
+
+void updateRightMotor(char value){
+  rightMotorValue = rightMotorValueMapped(value);
 }
 
 void establishContact() {
   while (Serial.available() <= 0) {
-    Serial.print('A');   // send a capital A
+    Serial.print(rightMotorValueMapped('B')); // send a capital A
     delay(300);
   }
 }

#include <Servo.h>

Servo leftMotor;        // create servo for the left motor
int leftMotorPin = 11;  // Left Motor on pin 11
Servo rightMotor;       // create servo for the right motor
int rightMotorPin = 12; // Right Motor on pin 12
int inByte = 0;         // incoming serial byte
int onMessage = 49;     // expected "on" message.  This is a "1" character.
int offMessage = 48;    // expected "off" message.  This is a "0" character.

void setup()
{
  leftMotor.attach(leftMotorPin);
  rightMotor.attach(rightMotorPin);


  leftMotor.write(90);
  rightMotor.write(90);
}

// Protocol for motor speeds:
int leftMotorValueMapped(char encoded){
  switch(encoded){
    case 'a':
      return 0;   // -100%
    case 'b':
      return 9;   // -90%
    case 'c':
      return 18;  // -80%
    case 'd':
      return 27;  // -70%
    case 'e':
      return 36;  // -60%
    case 'f':
      return 45;  // -50%
    case 'g':
      return 54;  // -40%
    case 'h':
      return 63;  // -30%
    case 'i':
      return 72;  // -20%
    case 'j':
      return 81;  // -10%
    case 'k':
      return 90;  // 0%
    case 'l':
      return 99;  // 10%
    case 'm':
      return 108; // 20%
    case 'n':
      return 117; // 30%
    case 'o':
      return 126; // 40%
    case 'p':
      return 135; // 50%
    case 'q':
      return 144; // 60%
    case 'r':
      return 153; // 70%
    case 's':
      return 162; // 80%
    case 't':
      return 171; // 90%
    case 'u':
      return 180; // 100%
  }
}

int rightMotorValueMapped(char encoded){
  switch(encoded){
    case 'A':
      return 0;   // -100%
    case 'B':
      return 9;   // -90%
    case 'C':
      return 18;  // -80%
    case 'D':
      return 27;  // -70%
    case 'E':
      return 36;  // -60%
    case 'F':
      return 45;  // -50%
    case 'G':
      return 54;  // -40%
    case 'H':
      return 63;  // -30%
    case 'I':
      return 72;  // -20%
    case 'J':
      return 81;  // -10%
    case 'K':
      return 90;  // 0%
    case 'L':
      return 99;  // 10%
    case 'M':
      return 108; // 20%
    case 'N':
      return 117; // 30%
    case 'O':
      return 126; // 40%
    case 'P':
      return 135; // 50%
    case 'Q':
      return 144; // 60%
    case 'R':
      return 153; // 70%
    case 'S':
      return 162; // 80%
    case 'T':
      return 171; // 90%
    case 'U':
      return 180; // 100%
  }
}
