         // Spin left for random amount of time
         actionTimeoutStart(random(500,700));
         motionRotateLeft(255);
+      }
+      break;
+
+    default:
+      break;
+  } 
+  
+}
+
+/**
+ * Sad :(
+ */
+void actionSad()
+{
+  if (action_state != A_SAD) {
+    Serial.println("Sad");
+    
+    // Set the state, so the action can be handled by the state machine.
+    action_state = A_SAD;
+    
+    actionTimeoutStart(random(500,700));
+    motionRev(200);
+  }
+}
+
+void actionSadStateMachine(byte motion_state)
+{
+  static byte count = 0;
+  
+  // Loop through left & right a few times.
+  if (count > 3) {
+    count = 0;
+    Serial.println("Sad done");
+    actionStop(); 
+  }
+  
+  switch (motion_state) {
+
+    case M_REV:
+      if (action_done) {
+        count++;
+        // Spin right for random amount of time
+        actionTimeoutStart(random(500,700));
+        motionFwd(200); 
+      }   
+      break;
+               
+    case M_FWD:
+      if (action_done) {
+        count++;
+        // Spin left for random amount of time
+        actionTimeoutStart(random(500,700));
+        motionRev(200);
       }
       break;
 

}

/**
 * Happy
 */
void actionHappy()
{

int whiskers_timer = 0; // Stores the timer used for the whiskers.

// Battery configuration
unsigned long battery_delay = 10000; // Number of milliseconds to wait before next battery reading

// Sound configuration
const byte sound_pin = 2;
