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
main.cpp@1:a2a5171ac99f, 2019-04-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |