for publish
Dependencies: Motordriver mbed
main.cpp@0:3ec2ed675b62, 2017-03-14 (annotated)
- Committer:
- zmcpro2
- Date:
- Tue Mar 14 15:51:43 2017 +0000
- Revision:
- 0:3ec2ed675b62
for publish;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |