     normal_proximity_flag = 0;
   }
   
+  if ( Serial.available() > 0 )
+  {
+    // Read the incoming byte.
+    int incoming_byte = Serial.read();
+    incoming_byte -= 48;
+    
+    play_song(incoming_byte);
+    
+    // Echo it back to serial.
+#if DEGBUG   
+    Serial.println(incoming_byte, DEC);
+#endif
+    
+    incoming_byte = -1;
+  }
+  
   // TODO: check if manually moved
   // is this as simple as just resetting the ears and arms after every loop?
   // This would work, I think, but could also draw a lot more power than otherwise.
+  
+  // TODO: Change clock speed to save battery.
 }
 
 uint16_t readProximity() {

    reset_arms();
  }
  
  // read ambient light
  write8(VCNL4000_COMMAND, VCNL4000_MEASUREAMBIENT | VCNL4000_MEASUREPROXIMITY);
  

#define RIGHT_ARM_CLOSED 478
#define RIGHT_ARM_OPEN   372

#define LEFT_EAR_BACK     475
#define LEFT_EAR_FORWARD  265
#define RIGHT_EAR_BACK    265
#define RIGHT_EAR_FORWARD 475
#define MIDDLE_EAR        370

const uint8_t left_arm  = 0;
const uint8_t right_arm = 1;
const uint8_t left_ear  = 2;
const uint8_t right_ear = 3;

// *******************
