for publish

Dependencies:   HC_SR04_Ultrasonic_Library mbed

Committer:
jasonbx
Date:
Tue Mar 14 15:49:33 2017 +0000
Revision:
0:fded9bf799e2
For publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jasonbx 0:fded9bf799e2 1 #include "mbed.h"
jasonbx 0:fded9bf799e2 2 #include "motordriver.h"
jasonbx 0:fded9bf799e2 3 #include "ultrasonic.h"
jasonbx 0:fded9bf799e2 4 #include "SongPlayer.h"
jasonbx 0:fded9bf799e2 5 int x=1;
jasonbx 0:fded9bf799e2 6
jasonbx 0:fded9bf799e2 7
jasonbx 0:fded9bf799e2 8 void dist(int distance)
jasonbx 0:fded9bf799e2 9 {
jasonbx 0:fded9bf799e2 10 if (distance<100){
jasonbx 0:fded9bf799e2 11 x=0;
jasonbx 0:fded9bf799e2 12 }
jasonbx 0:fded9bf799e2 13 //put code here to execute when the distance has changed
jasonbx 0:fded9bf799e2 14 printf("Distance %d mm\r\n", distance);
jasonbx 0:fded9bf799e2 15
jasonbx 0:fded9bf799e2 16 }
jasonbx 0:fded9bf799e2 17
jasonbx 0:fded9bf799e2 18
jasonbx 0:fded9bf799e2 19 ultrasonic mu(p9, p10, .1, 1, &dist);
jasonbx 0:fded9bf799e2 20 //BusOut myled(LED1,LED2,LED3,LED4);
jasonbx 0:fded9bf799e2 21 DigitalOut led1(LED1);
jasonbx 0:fded9bf799e2 22 DigitalOut led2(LED2);
jasonbx 0:fded9bf799e2 23 DigitalOut led3(LED3);
jasonbx 0:fded9bf799e2 24 DigitalOut led4(LED4);
jasonbx 0:fded9bf799e2 25 Serial blue(p28,p27);
jasonbx 0:fded9bf799e2 26 AnalogIn ain(A0); //p15
jasonbx 0:fded9bf799e2 27 SongPlayer mySpeaker(p26);
jasonbx 0:fded9bf799e2 28 Motor A(p23, p6, p5, 1); // pwm, fwd, rev, can brake
jasonbx 0:fded9bf799e2 29 Motor B(p21, p7, p8, 1); // pwm, fwd, rev, can brake
jasonbx 0:fded9bf799e2 30
jasonbx 0:fded9bf799e2 31 float note[18]= {1568.0,1396.9,1244.5,1244.5,1396.9,1568.0,1568.0,1568.0,1396.9,
jasonbx 0:fded9bf799e2 32 1244.5,1396.9,1568.0,1396.9,1244.5,1174.7,1244.5,1244.5, 0.0
jasonbx 0:fded9bf799e2 33 };
jasonbx 0:fded9bf799e2 34 float duration[18]= {0.48,0.24,0.72,0.48,0.24,0.48,0.24,0.24,0.24,
jasonbx 0:fded9bf799e2 35 0.24,0.24,0.24,0.24,0.48,0.24,0.48,0.48, 0.0
jasonbx 0:fded9bf799e2 36 };
jasonbx 0:fded9bf799e2 37
jasonbx 0:fded9bf799e2 38 int main()
jasonbx 0:fded9bf799e2 39 {
jasonbx 0:fded9bf799e2 40
jasonbx 0:fded9bf799e2 41 mu.startUpdates();//start measuring the distance
jasonbx 0:fded9bf799e2 42 char bnum=0;
jasonbx 0:fded9bf799e2 43 char bhit=0;
jasonbx 0:fded9bf799e2 44
jasonbx 0:fded9bf799e2 45 while(x==1){
jasonbx 0:fded9bf799e2 46 mu.checkDistance();
jasonbx 0:fded9bf799e2 47
jasonbx 0:fded9bf799e2 48 led1 = (ain > 0.15f) ? 1 : 0;
jasonbx 0:fded9bf799e2 49 led2 = (ain > 0.30f) ? 1 : 0;
jasonbx 0:fded9bf799e2 50 led3 = (ain > 0.45f) ? 1 : 0;
jasonbx 0:fded9bf799e2 51 led4 = (ain > 0.7f) ? 1 : 0;
jasonbx 0:fded9bf799e2 52 A.speed(0.4);
jasonbx 0:fded9bf799e2 53 B.speed(0.4);
jasonbx 0:fded9bf799e2 54
jasonbx 0:fded9bf799e2 55
jasonbx 0:fded9bf799e2 56
jasonbx 0:fded9bf799e2 57
jasonbx 0:fded9bf799e2 58 // printf("Distance %d mm\r\n", distance);
jasonbx 0:fded9bf799e2 59
jasonbx 0:fded9bf799e2 60 }
jasonbx 0:fded9bf799e2 61 mySpeaker.PlaySong(note,duration);
jasonbx 0:fded9bf799e2 62 // loops forever while song continues to play to end using interrupts
jasonbx 0:fded9bf799e2 63 A.speed(0);
jasonbx 0:fded9bf799e2 64 B.speed(0);
jasonbx 0:fded9bf799e2 65 while(1){
jasonbx 0:fded9bf799e2 66 if (blue.getc()=='!') {
jasonbx 0:fded9bf799e2 67 if (blue.getc()=='B') { //button data packet
jasonbx 0:fded9bf799e2 68 bnum = blue.getc(); //button number
jasonbx 0:fded9bf799e2 69 bhit = blue.getc(); //1=hit, 0=release
jasonbx 0:fded9bf799e2 70 if (blue.getc()==char(~('!' + 'B' + bnum + bhit))) { //checksum OK?
jasonbx 0:fded9bf799e2 71 // myled = bnum - '0'; //current button number will appear on LEDs
jasonbx 0:fded9bf799e2 72 switch (bnum) {
jasonbx 0:fded9bf799e2 73 case '1': //number button 1
jasonbx 0:fded9bf799e2 74 if (bhit=='1') {
jasonbx 0:fded9bf799e2 75 A.speed(0);
jasonbx 0:fded9bf799e2 76 B.speed(0);
jasonbx 0:fded9bf799e2 77 } else {
jasonbx 0:fded9bf799e2 78 //add release code here
jasonbx 0:fded9bf799e2 79 }
jasonbx 0:fded9bf799e2 80 break;
jasonbx 0:fded9bf799e2 81 case '2': //number button 2
jasonbx 0:fded9bf799e2 82 if (bhit=='1') {
jasonbx 0:fded9bf799e2 83 //add hit code here
jasonbx 0:fded9bf799e2 84 } else {
jasonbx 0:fded9bf799e2 85 //add release code here
jasonbx 0:fded9bf799e2 86 }
jasonbx 0:fded9bf799e2 87 break;
jasonbx 0:fded9bf799e2 88 case '3': //number button 3
jasonbx 0:fded9bf799e2 89 if (bhit=='1') {
jasonbx 0:fded9bf799e2 90 //add hit code here
jasonbx 0:fded9bf799e2 91 } else {
jasonbx 0:fded9bf799e2 92 //add release code here
jasonbx 0:fded9bf799e2 93 }
jasonbx 0:fded9bf799e2 94 break;
jasonbx 0:fded9bf799e2 95 case '4': //number button 4
jasonbx 0:fded9bf799e2 96 if (bhit=='1') {
jasonbx 0:fded9bf799e2 97 //add hit code here
jasonbx 0:fded9bf799e2 98 } else {
jasonbx 0:fded9bf799e2 99 //add release code here
jasonbx 0:fded9bf799e2 100 }
jasonbx 0:fded9bf799e2 101 break;
jasonbx 0:fded9bf799e2 102 case '5': //button 5 up arrow
jasonbx 0:fded9bf799e2 103 if (bhit=='1') {
jasonbx 0:fded9bf799e2 104 A.speed(1);
jasonbx 0:fded9bf799e2 105 B.speed(1);
jasonbx 0:fded9bf799e2 106 wait(0.02);
jasonbx 0:fded9bf799e2 107 } else {
jasonbx 0:fded9bf799e2 108 //add release code here
jasonbx 0:fded9bf799e2 109 }
jasonbx 0:fded9bf799e2 110 break;
jasonbx 0:fded9bf799e2 111 case '6': //button 6 down arrow
jasonbx 0:fded9bf799e2 112 if (bhit=='1') {
jasonbx 0:fded9bf799e2 113 A.speed(-1);
jasonbx 0:fded9bf799e2 114 B.speed(-1);
jasonbx 0:fded9bf799e2 115 wait(0.02);
jasonbx 0:fded9bf799e2 116 } else {
jasonbx 0:fded9bf799e2 117 //add release code here
jasonbx 0:fded9bf799e2 118 }
jasonbx 0:fded9bf799e2 119 break;
jasonbx 0:fded9bf799e2 120 case '7': //button 7 left arrow
jasonbx 0:fded9bf799e2 121 if (bhit=='1') {
jasonbx 0:fded9bf799e2 122 A.speed(-1);
jasonbx 0:fded9bf799e2 123 B.speed(1);
jasonbx 0:fded9bf799e2 124 wait(0.02);
jasonbx 0:fded9bf799e2 125 } else {
jasonbx 0:fded9bf799e2 126 //add release code here
jasonbx 0:fded9bf799e2 127 }
jasonbx 0:fded9bf799e2 128 break;
jasonbx 0:fded9bf799e2 129 case '8': //button 8 right arrow
jasonbx 0:fded9bf799e2 130 if (bhit=='1') {
jasonbx 0:fded9bf799e2 131 A.speed(1);
jasonbx 0:fded9bf799e2 132 B.speed(-1);
jasonbx 0:fded9bf799e2 133 wait(0.02);
jasonbx 0:fded9bf799e2 134 } else {
jasonbx 0:fded9bf799e2 135 //add release code here
jasonbx 0:fded9bf799e2 136 }
jasonbx 0:fded9bf799e2 137 break;
jasonbx 0:fded9bf799e2 138 default:
jasonbx 0:fded9bf799e2 139 A.speed(0.3);
jasonbx 0:fded9bf799e2 140 B.speed(0.3);
jasonbx 0:fded9bf799e2 141 break;
jasonbx 0:fded9bf799e2 142 }
jasonbx 0:fded9bf799e2 143 }
jasonbx 0:fded9bf799e2 144 }
jasonbx 0:fded9bf799e2 145 }
jasonbx 0:fded9bf799e2 146 }
jasonbx 0:fded9bf799e2 147 }