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

Committer:
skrgo3
Date:
Tue Apr 16 22:30:18 2019 +0000
Revision:
1:a2a5171ac99f
Parent:
0:7b070cdce8bd
Child:
3:003d2a50231f
Wheels and sonar

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jprocter3 0:7b070cdce8bd 1 #include "mbed.h"
skrgo3 1:a2a5171ac99f 2 #include "Motor.h"
jprocter3 0:7b070cdce8bd 3 #include "rtos.h"
jprocter3 0:7b070cdce8bd 4 #include "uLCD_4DGL.h"
skrgo3 1:a2a5171ac99f 5 #include "ultrasonic.h"
jprocter3 0:7b070cdce8bd 6 uLCD_4DGL uLCD(p28,p27,p29); // serial tx, serial rx, reset pin;
jprocter3 0:7b070cdce8bd 7 DigitalOut speaker(p18);
skrgo3 1:a2a5171ac99f 8 ultrasonic mu(p6, p7, .1, 1, &dist);
skrgo3 1:a2a5171ac99f 9 Motor m1(p23, p12, p11); // pwm, fwd, rev
skrgo3 1:a2a5171ac99f 10 Motor m2(p24, p12, p11); // pwm, fwd, rev
jprocter3 0:7b070cdce8bd 11
jprocter3 0:7b070cdce8bd 12 DigitalOut led1(LED1);
jprocter3 0:7b070cdce8bd 13 DigitalOut led2(LED2);
jprocter3 0:7b070cdce8bd 14 DigitalOut led3(LED3);
jprocter3 0:7b070cdce8bd 15 DigitalOut led4(LED4);
jprocter3 0:7b070cdce8bd 16
jprocter3 0:7b070cdce8bd 17 volatile unsigned int state;
jprocter3 0:7b070cdce8bd 18 volatile unsigned int energy;
jprocter3 0:7b070cdce8bd 19 volatile unsigned int touched;
skrgo3 1:a2a5171ac99f 20 volatile bool fed;
skrgo3 1:a2a5171ac99f 21 volatile bool blocked;
skrgo3 1:a2a5171ac99f 22
skrgo3 1:a2a5171ac99f 23 void dist(int distance)
skrgo3 1:a2a5171ac99f 24 {
skrgo3 1:a2a5171ac99f 25 //put code here to execute when the distance has changed
skrgo3 1:a2a5171ac99f 26 if(distance < 50 && state == ROAM)
skrgo3 1:a2a5171ac99f 27 {
skrgo3 1:a2a5171ac99f 28 //turn the bot
skrgo3 1:a2a5171ac99f 29 }
skrgo3 1:a2a5171ac99f 30 else if(distance < 10 && state == STOPPED)
skrgo3 1:a2a5171ac99f 31 {
skrgo3 1:a2a5171ac99f 32 //increase food status
skrgo3 1:a2a5171ac99f 33 }
skrgo3 1:a2a5171ac99f 34 }
jprocter3 0:7b070cdce8bd 35
jprocter3 0:7b070cdce8bd 36 void sonar(void const *argument) {
skrgo3 1:a2a5171ac99f 37 while(1)
skrgo3 1:a2a5171ac99f 38 {
skrgo3 1:a2a5171ac99f 39 mu.checkDistance();
skrgo3 1:a2a5171ac99f 40 Thread::wait(100);
skrgo3 1:a2a5171ac99f 41 }
jprocter3 0:7b070cdce8bd 42 }
jprocter3 0:7b070cdce8bd 43
jprocter3 0:7b070cdce8bd 44 void touchpad(void const *argument) {
jprocter3 0:7b070cdce8bd 45
jprocter3 0:7b070cdce8bd 46 }
jprocter3 0:7b070cdce8bd 47
jprocter3 0:7b070cdce8bd 48 void screen(void const *argument) {
jprocter3 0:7b070cdce8bd 49
jprocter3 0:7b070cdce8bd 50 }
jprocter3 0:7b070cdce8bd 51
jprocter3 0:7b070cdce8bd 52 void sound(void const *argument) {
jprocter3 0:7b070cdce8bd 53
jprocter3 0:7b070cdce8bd 54 }
jprocter3 0:7b070cdce8bd 55
jprocter3 0:7b070cdce8bd 56 void wheels(void const *argument) {
skrgo3 1:a2a5171ac99f 57 while(1)
skrgo3 1:a2a5171ac99f 58 {
skrgo3 1:a2a5171ac99f 59 if(state == ROAM && !blocked)
skrgo3 1:a2a5171ac99f 60 {
skrgo3 1:a2a5171ac99f 61 m1.speed(s);
skrgo3 1:a2a5171ac99f 62 m2.speed(s);
skrgo3 1:a2a5171ac99f 63 }
skrgo3 1:a2a5171ac99f 64 else if(state == STOP || state == SLEEP)
skrgo3 1:a2a5171ac99f 65 {
skrgo3 1:a2a5171ac99f 66 m1.speed(0);
skrgo3 1:a2a5171ac99f 67 m2.speed(0);
skrgo3 1:a2a5171ac99f 68 }
skrgo3 1:a2a5171ac99f 69 }
jprocter3 0:7b070cdce8bd 70 }
jprocter3 0:7b070cdce8bd 71
jprocter3 0:7b070cdce8bd 72 int main() {
jprocter3 0:7b070cdce8bd 73 uLCD.cls();
jprocter3 0:7b070cdce8bd 74 uLCD.printf("Change baudrate.....");
jprocter3 0:7b070cdce8bd 75 uLCD.baudrate(3000000); //jack up baud rate to max
jprocter3 0:7b070cdce8bd 76 uLCD.background_color(BLACK);
jprocter3 0:7b070cdce8bd 77 uLCD.cls();
skrgo3 1:a2a5171ac99f 78 mu.startUpdates();
jprocter3 0:7b070cdce8bd 79
jprocter3 0:7b070cdce8bd 80 Thread thread1(sonar);
jprocter3 0:7b070cdce8bd 81 Thread thread2(touchpad);
jprocter3 0:7b070cdce8bd 82 Thread thread3(screen);
jprocter3 0:7b070cdce8bd 83 Thread thread4(sound);
jprocter3 0:7b070cdce8bd 84 Thread thread5(wheels);
jprocter3 0:7b070cdce8bd 85
skrgo3 1:a2a5171ac99f 86 while(1)
skrgo3 1:a2a5171ac99f 87 {
jprocter3 0:7b070cdce8bd 88
jprocter3 0:7b070cdce8bd 89 }
jprocter3 0:7b070cdce8bd 90 }