Code for a robotic pet to interact with.

Dependencies:   mbed wave_player Servo Motordriver mbed-rtos 4DGL-uLCD-SE SDFileSystem_OldbutworkswithRTOS HC_SR04_Ultrasonic_Library

Revision:
15:02e772571d48
Parent:
14:7e45dbeb0acf
--- a/main.cpp	Sat Apr 20 21:55:34 2019 +0000
+++ b/main.cpp	Mon Apr 22 18:55:43 2019 +0000
@@ -6,6 +6,7 @@
 #include "ultrasonic.h"
 #include "SDFileSystem.h"
 #include "wave_player.h"
+#include "Servo.h"
 uLCD_4DGL uLCD(p13,p14,p29); // serial tx, serial rx, reset pin;
 SDFileSystem sd(p5, p6, p7, p21, "sd"); //SD card
 AnalogOut DACout(p18);
@@ -15,6 +16,7 @@
 InterruptIn interrupt(p26);
 I2C i2c(p28, p27);
 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
+Servo myservo(p22);
 
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
@@ -31,6 +33,8 @@
 
 void fallInterrupt() {
       touchpad = true;
+      mpr121.read(0x00);
+      mpr121.read(0x01);
 }
 
 void dist(int distance) {
@@ -40,9 +44,9 @@
             m1.stop(0);
             m2.stop(0);
             Thread::wait(100);
-            m1.speed(.75);
-            m2.speed(-.75);
-            Thread::wait(500);
+            m1.speed(.6);
+            m2.speed(-.6);
+            Thread::wait(400);
         } else {
             m1.speed(.5);
             m2.speed(.5);
@@ -150,6 +154,24 @@
     }
 }
 
+void tail(void const *argument) {
+    while(1) {
+        if (state == STOP && (touched || fed)) {
+            for(int i=0; i<100; i++) {
+                myservo = i/100.0;
+                Thread::wait(10);
+            }
+            for(int i=100; i>0; i--) {
+                myservo = i/100.0;
+                Thread::wait(10);
+            }
+        } else {
+            myservo = 0.5;   
+        }
+        Thread::wait(500);
+    }
+}
+
 int main() {
     uLCD.cls();
     uLCD.printf("Change baudrate.....");
@@ -171,6 +193,7 @@
     Thread thread2(touch);
     Thread thread3(screen);
     Thread thread4(sound);
+    Thread thread5(tail);
     
     while(1) {
         // Status LEDS