for publish

Dependencies:   Motordriver mbed

Committer:
zmcpro2
Date:
Tue Mar 14 15:51:43 2017 +0000
Revision:
0:3ec2ed675b62
for publish;

Who changed what in which revision?

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