Keith Liang / Mbed 2 deprecated FP

Dependencies:   mbed mbed-rtos Motor HC_SR04_Ultrasonic_Library

Committer:
keithliang8
Date:
Mon Nov 30 00:22:27 2020 +0000
Revision:
0:8048099359db
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
keithliang8 0:8048099359db 1 #include "mbed.h"
keithliang8 0:8048099359db 2 //#include "wave_player.h"
keithliang8 0:8048099359db 3 //#include "SDFileSystem.h"
keithliang8 0:8048099359db 4 #include "Motor.h"
keithliang8 0:8048099359db 5 #include "rtos.h"
keithliang8 0:8048099359db 6 //#include "RGBLed.h"
keithliang8 0:8048099359db 7 #include "ultrasonic.h"
keithliang8 0:8048099359db 8 #include "Speaker.h"
keithliang8 0:8048099359db 9 Speaker speak(p26); //Speaker
keithliang8 0:8048099359db 10 Serial blue(p28,p27); //Bluetooth Module
keithliang8 0:8048099359db 11 Motor A(p21, p5, p13); // pwm, fwd, rev, can brake Back Left
keithliang8 0:8048099359db 12 Motor B(p22, p14, p8); // pwm, fwd, rev, can brake Back Right
keithliang8 0:8048099359db 13 Motor C(p23, p11, p12); // pwm, fwd, rev, can brake Front Right
keithliang8 0:8048099359db 14 Motor D(p24, p9, p10); // pwm, fwd, rev, can brake Front Left
keithliang8 0:8048099359db 15 DigitalOut myled(LED2);
keithliang8 0:8048099359db 16 //AnalogOut DACout(p18);
keithliang8 0:8048099359db 17 //wave_player waver(&DACout);
keithliang8 0:8048099359db 18 float RmotorSpeed = 0.0;
keithliang8 0:8048099359db 19 float LmotorSpeed = 0.0;
keithliang8 0:8048099359db 20
keithliang8 0:8048099359db 21 int triggerDist = 300;
keithliang8 0:8048099359db 22
keithliang8 0:8048099359db 23 void dist(int distance)
keithliang8 0:8048099359db 24 {
keithliang8 0:8048099359db 25 if(distance <= triggerDist) {
keithliang8 0:8048099359db 26 RmotorSpeed = 0.0;
keithliang8 0:8048099359db 27 LmotorSpeed = 0.0;
keithliang8 0:8048099359db 28 A.speed(LmotorSpeed);
keithliang8 0:8048099359db 29 B.speed(RmotorSpeed);
keithliang8 0:8048099359db 30 C.speed(RmotorSpeed);
keithliang8 0:8048099359db 31 D.speed(LmotorSpeed);
keithliang8 0:8048099359db 32 speak.PlayNote(500.0, 2, 0.2);
keithliang8 0:8048099359db 33 }
keithliang8 0:8048099359db 34 }
keithliang8 0:8048099359db 35 ultrasonic mu(p6, p7, .1, 1, &dist);
keithliang8 0:8048099359db 36
keithliang8 0:8048099359db 37 void startSonar(void const* argument){
keithliang8 0:8048099359db 38 mu.startUpdates();
keithliang8 0:8048099359db 39 while(1) {
keithliang8 0:8048099359db 40 mu.checkDistance();
keithliang8 0:8048099359db 41 Thread::wait(50);
keithliang8 0:8048099359db 42 }
keithliang8 0:8048099359db 43 }
keithliang8 0:8048099359db 44
keithliang8 0:8048099359db 45 void turnRight(){
keithliang8 0:8048099359db 46 A.speed(0.5);
keithliang8 0:8048099359db 47 B.speed(-0.5);
keithliang8 0:8048099359db 48 C.speed(-0.5);
keithliang8 0:8048099359db 49 D.speed(0.5);
keithliang8 0:8048099359db 50 wait(1.05);
keithliang8 0:8048099359db 51 A.speed(0);
keithliang8 0:8048099359db 52 B.speed(0);
keithliang8 0:8048099359db 53 C.speed(0);
keithliang8 0:8048099359db 54 D.speed(0);
keithliang8 0:8048099359db 55 }
keithliang8 0:8048099359db 56 void turnLeft(){
keithliang8 0:8048099359db 57 A.speed(-0.5);
keithliang8 0:8048099359db 58 B.speed(0.5);
keithliang8 0:8048099359db 59 C.speed(0.5);
keithliang8 0:8048099359db 60 D.speed(-0.5);
keithliang8 0:8048099359db 61 wait(1.2);
keithliang8 0:8048099359db 62 A.speed(0);
keithliang8 0:8048099359db 63 B.speed(0);
keithliang8 0:8048099359db 64 C.speed(0);
keithliang8 0:8048099359db 65 D.speed(0);
keithliang8 0:8048099359db 66 }
keithliang8 0:8048099359db 67
keithliang8 0:8048099359db 68 int main()
keithliang8 0:8048099359db 69 {
keithliang8 0:8048099359db 70 Thread thread1(startSonar);
keithliang8 0:8048099359db 71
keithliang8 0:8048099359db 72 char bnum = 0;
keithliang8 0:8048099359db 73 char bhit = 0;
keithliang8 0:8048099359db 74 while(1)
keithliang8 0:8048099359db 75 {
keithliang8 0:8048099359db 76
keithliang8 0:8048099359db 77 A.speed(LmotorSpeed);
keithliang8 0:8048099359db 78 B.speed(RmotorSpeed);
keithliang8 0:8048099359db 79 C.speed(RmotorSpeed);
keithliang8 0:8048099359db 80 D.speed(LmotorSpeed);
keithliang8 0:8048099359db 81
keithliang8 0:8048099359db 82 if (blue.getc() == '!') {
keithliang8 0:8048099359db 83 char cmd = blue.getc();
keithliang8 0:8048099359db 84 if (cmd == 'B') { //button data packet
keithliang8 0:8048099359db 85 bnum = blue.getc(); //button number
keithliang8 0:8048099359db 86 bhit = blue.getc(); //1=hit, 0=release
keithliang8 0:8048099359db 87 if (blue.getc() == char(~('!' + 'B' + bnum + bhit))) { //checksum OK?
keithliang8 0:8048099359db 88 switch (bnum) {
keithliang8 0:8048099359db 89 case '1': //number button 1
keithliang8 0:8048099359db 90 if (bhit=='1') {
keithliang8 0:8048099359db 91 //add hit code here
keithliang8 0:8048099359db 92 RmotorSpeed += 0.2;
keithliang8 0:8048099359db 93 LmotorSpeed += 0.2; // speed up
keithliang8 0:8048099359db 94 } else {
keithliang8 0:8048099359db 95 //add release code here
keithliang8 0:8048099359db 96 }
keithliang8 0:8048099359db 97 break;
keithliang8 0:8048099359db 98 case '2': //number button 2
keithliang8 0:8048099359db 99 if (bhit=='1') {
keithliang8 0:8048099359db 100 //add hit code here
keithliang8 0:8048099359db 101 } else {
keithliang8 0:8048099359db 102 //add release code here
keithliang8 0:8048099359db 103 LmotorSpeed -= 0.2;
keithliang8 0:8048099359db 104 RmotorSpeed -= 0.2;// slow down
keithliang8 0:8048099359db 105 }
keithliang8 0:8048099359db 106 break;
keithliang8 0:8048099359db 107 case '3': //number button 3
keithliang8 0:8048099359db 108 if (bhit=='1') {
keithliang8 0:8048099359db 109 //add hit code here
keithliang8 0:8048099359db 110 } else {
keithliang8 0:8048099359db 111 //add release code here
keithliang8 0:8048099359db 112 LmotorSpeed = 0.0;
keithliang8 0:8048099359db 113 RmotorSpeed = 0.0;
keithliang8 0:8048099359db 114 }
keithliang8 0:8048099359db 115 break;
keithliang8 0:8048099359db 116 case '4': //number button 4
keithliang8 0:8048099359db 117 if (bhit=='1') {
keithliang8 0:8048099359db 118 speak.PlayNote(969.0, .2, 0.2);
keithliang8 0:8048099359db 119 } else {
keithliang8 0:8048099359db 120 //add release code here
keithliang8 0:8048099359db 121
keithliang8 0:8048099359db 122 }
keithliang8 0:8048099359db 123 break;
keithliang8 0:8048099359db 124 case '5': //button 5 up arrow
keithliang8 0:8048099359db 125 if (bhit=='1') {
keithliang8 0:8048099359db 126 if(LmotorSpeed > 0 && RmotorSpeed > 0) {
keithliang8 0:8048099359db 127 }
keithliang8 0:8048099359db 128 else if(LmotorSpeed <= 0 && RmotorSpeed <= 0) {
keithliang8 0:8048099359db 129 LmotorSpeed = 0.4;
keithliang8 0:8048099359db 130 RmotorSpeed = 0.4;
keithliang8 0:8048099359db 131 }
keithliang8 0:8048099359db 132 } else {
keithliang8 0:8048099359db 133 //add release code here
keithliang8 0:8048099359db 134 }
keithliang8 0:8048099359db 135 break;
keithliang8 0:8048099359db 136 case '6': //button 6 down arrow
keithliang8 0:8048099359db 137 if (bhit=='1') {
keithliang8 0:8048099359db 138 if(LmotorSpeed < 0 && RmotorSpeed < 0) {
keithliang8 0:8048099359db 139
keithliang8 0:8048099359db 140 }
keithliang8 0:8048099359db 141 else if(LmotorSpeed >= 0 && RmotorSpeed >= 0) {
keithliang8 0:8048099359db 142 LmotorSpeed = -0.4;
keithliang8 0:8048099359db 143 RmotorSpeed = -0.4;
keithliang8 0:8048099359db 144 }
keithliang8 0:8048099359db 145 } else {
keithliang8 0:8048099359db 146 //add release code here
keithliang8 0:8048099359db 147 }
keithliang8 0:8048099359db 148 break;
keithliang8 0:8048099359db 149 case '7': //button 7 left arrow
keithliang8 0:8048099359db 150 if (bhit=='1') {
keithliang8 0:8048099359db 151 LmotorSpeed = 0.25*RmotorSpeed;
keithliang8 0:8048099359db 152 } else {
keithliang8 0:8048099359db 153 //add release code here
keithliang8 0:8048099359db 154 }
keithliang8 0:8048099359db 155 break;
keithliang8 0:8048099359db 156 case '8': //button 8 right arrow
keithliang8 0:8048099359db 157 if (bhit=='1') {
keithliang8 0:8048099359db 158 RmotorSpeed = 0.25*LmotorSpeed;
keithliang8 0:8048099359db 159 } else {
keithliang8 0:8048099359db 160 //add release code here
keithliang8 0:8048099359db 161 }
keithliang8 0:8048099359db 162 break;
keithliang8 0:8048099359db 163 default:
keithliang8 0:8048099359db 164 break;
keithliang8 0:8048099359db 165 }
keithliang8 0:8048099359db 166 }
keithliang8 0:8048099359db 167 }
keithliang8 0:8048099359db 168 else if (cmd == 'X') {
keithliang8 0:8048099359db 169 char first = blue.getc();
keithliang8 0:8048099359db 170 char second = blue.getc();
keithliang8 0:8048099359db 171 char comma = blue.getc();
keithliang8 0:8048099359db 172 char third = blue.getc();
keithliang8 0:8048099359db 173 char fourth = blue.getc();
keithliang8 0:8048099359db 174 int secondnum = second - '0';
keithliang8 0:8048099359db 175 float xdist = secondnum * .75;
keithliang8 0:8048099359db 176 int fourthnum = fourth - '0';
keithliang8 0:8048099359db 177 float ydist = fourthnum * .75;
keithliang8 0:8048099359db 178 if(third == '+'){
keithliang8 0:8048099359db 179 A.speed(0.5);
keithliang8 0:8048099359db 180 B.speed(0.5);
keithliang8 0:8048099359db 181 C.speed(0.5);
keithliang8 0:8048099359db 182 D.speed(0.5);
keithliang8 0:8048099359db 183 wait(ydist);
keithliang8 0:8048099359db 184 A.speed(0);
keithliang8 0:8048099359db 185 B.speed(0);
keithliang8 0:8048099359db 186 C.speed(0);
keithliang8 0:8048099359db 187 D.speed(0);
keithliang8 0:8048099359db 188 }
keithliang8 0:8048099359db 189 else if(third == '-'){
keithliang8 0:8048099359db 190 A.speed(-0.5);
keithliang8 0:8048099359db 191 B.speed(-0.5);
keithliang8 0:8048099359db 192 C.speed(-0.5);
keithliang8 0:8048099359db 193 D.speed(-0.5);
keithliang8 0:8048099359db 194 wait(ydist);
keithliang8 0:8048099359db 195 A.speed(0);
keithliang8 0:8048099359db 196 B.speed(0);
keithliang8 0:8048099359db 197 C.speed(0);
keithliang8 0:8048099359db 198 D.speed(0);
keithliang8 0:8048099359db 199 }
keithliang8 0:8048099359db 200 if(first == '+'){
keithliang8 0:8048099359db 201 turnRight();
keithliang8 0:8048099359db 202 A.speed(0.5);
keithliang8 0:8048099359db 203 B.speed(0.5);
keithliang8 0:8048099359db 204 C.speed(0.5);
keithliang8 0:8048099359db 205 D.speed(0.5);
keithliang8 0:8048099359db 206 wait(xdist);
keithliang8 0:8048099359db 207 A.speed(0);
keithliang8 0:8048099359db 208 B.speed(0);
keithliang8 0:8048099359db 209 C.speed(0);
keithliang8 0:8048099359db 210 D.speed(0);
keithliang8 0:8048099359db 211 }
keithliang8 0:8048099359db 212 else if(first == '-'){
keithliang8 0:8048099359db 213 turnLeft();
keithliang8 0:8048099359db 214 A.speed(0.5);
keithliang8 0:8048099359db 215 B.speed(0.5);
keithliang8 0:8048099359db 216 C.speed(0.5);
keithliang8 0:8048099359db 217 D.speed(0.5);
keithliang8 0:8048099359db 218 wait(xdist);
keithliang8 0:8048099359db 219 A.speed(0);
keithliang8 0:8048099359db 220 B.speed(0);
keithliang8 0:8048099359db 221 C.speed(0);
keithliang8 0:8048099359db 222 D.speed(0); }
keithliang8 0:8048099359db 223
keithliang8 0:8048099359db 224 }
keithliang8 0:8048099359db 225 }
keithliang8 0:8048099359db 226 }
keithliang8 0:8048099359db 227 }