On_est_là
/
pololu_mpi3_V2
Version2
main.cpp@1:a70715783fa2, 2019-11-13 (annotated)
- Committer:
- emilienb
- Date:
- Wed Nov 13 16:26:39 2019 +0000
- Revision:
- 1:a70715783fa2
- Parent:
- 0:286c78fcd9dd
v2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilienb | 0:286c78fcd9dd | 1 | #include "mbed.h" |
emilienb | 0:286c78fcd9dd | 2 | #include "m3pi.h" |
emilienb | 0:286c78fcd9dd | 3 | //#include "MSCFileSystem.h" |
emilienb | 0:286c78fcd9dd | 4 | |
emilienb | 0:286c78fcd9dd | 5 | m3pi pololu; |
emilienb | 0:286c78fcd9dd | 6 | |
emilienb | 1:a70715783fa2 | 7 | Serial usb(p28,p27); |
emilienb | 0:286c78fcd9dd | 8 | |
emilienb | 0:286c78fcd9dd | 9 | DigitalOut l1(LED1); |
emilienb | 0:286c78fcd9dd | 10 | DigitalOut l2(LED2); |
emilienb | 0:286c78fcd9dd | 11 | DigitalOut l3(LED3); |
emilienb | 0:286c78fcd9dd | 12 | DigitalOut l4(LED4); |
emilienb | 0:286c78fcd9dd | 13 | |
emilienb | 0:286c78fcd9dd | 14 | float speed = 0.5; |
emilienb | 1:a70715783fa2 | 15 | int seuil = 500; |
emilienb | 0:286c78fcd9dd | 16 | |
emilienb | 1:a70715783fa2 | 17 | |
emilienb | 1:a70715783fa2 | 18 | int main() |
emilienb | 1:a70715783fa2 | 19 | { |
emilienb | 0:286c78fcd9dd | 20 | |
emilienb | 1:a70715783fa2 | 21 | int capteurs[5]= {1,1,1,1,1}; |
emilienb | 1:a70715783fa2 | 22 | int cap_seuil[5]= {0,0,0,0,0}; |
emilienb | 1:a70715783fa2 | 23 | char buff[8]; |
emilienb | 1:a70715783fa2 | 24 | char c; |
emilienb | 1:a70715783fa2 | 25 | |
emilienb | 1:a70715783fa2 | 26 | pololu.sensor_auto_calibrate(); |
emilienb | 1:a70715783fa2 | 27 | |
emilienb | 0:286c78fcd9dd | 28 | while(1) { |
emilienb | 1:a70715783fa2 | 29 | //affichage valeur capteur |
emilienb | 0:286c78fcd9dd | 30 | //Boucle switch de reception de données via serial |
emilienb | 1:a70715783fa2 | 31 | if(usb.readable()) |
emilienb | 1:a70715783fa2 | 32 | { |
emilienb | 0:286c78fcd9dd | 33 | c = usb.getc(); |
emilienb | 1:a70715783fa2 | 34 | switch(c){ |
emilienb | 1:a70715783fa2 | 35 | case '0': |
emilienb | 1:a70715783fa2 | 36 | pololu.sensor_auto_calibrate(); |
emilienb | 1:a70715783fa2 | 37 | break; |
emilienb | 0:286c78fcd9dd | 38 | case 'z': |
emilienb | 0:286c78fcd9dd | 39 | pololu.forward(speed); |
emilienb | 0:286c78fcd9dd | 40 | l1 = 1; |
emilienb | 0:286c78fcd9dd | 41 | l2 = 0; |
emilienb | 0:286c78fcd9dd | 42 | l3 = 0; |
emilienb | 0:286c78fcd9dd | 43 | l4 = 0; |
emilienb | 0:286c78fcd9dd | 44 | break; |
emilienb | 1:a70715783fa2 | 45 | case 's': |
emilienb | 0:286c78fcd9dd | 46 | pololu.backward(speed); |
emilienb | 0:286c78fcd9dd | 47 | l1 = 0; |
emilienb | 0:286c78fcd9dd | 48 | l2 = 1; |
emilienb | 0:286c78fcd9dd | 49 | l3 = 0; |
emilienb | 0:286c78fcd9dd | 50 | l4 = 0; |
emilienb | 0:286c78fcd9dd | 51 | break; |
emilienb | 1:a70715783fa2 | 52 | case 'q': |
emilienb | 0:286c78fcd9dd | 53 | pololu.left(0.3); |
emilienb | 0:286c78fcd9dd | 54 | l1 = 1; |
emilienb | 0:286c78fcd9dd | 55 | l2 = 0; |
emilienb | 0:286c78fcd9dd | 56 | l3 = 0; |
emilienb | 0:286c78fcd9dd | 57 | l4 = 0; |
emilienb | 0:286c78fcd9dd | 58 | break; |
emilienb | 1:a70715783fa2 | 59 | case 'd': |
emilienb | 0:286c78fcd9dd | 60 | pololu.right(0.3); |
emilienb | 0:286c78fcd9dd | 61 | l1 = 1; |
emilienb | 0:286c78fcd9dd | 62 | l2 = 0; |
emilienb | 0:286c78fcd9dd | 63 | l3 = 0; |
emilienb | 0:286c78fcd9dd | 64 | l4 = 0; |
emilienb | 0:286c78fcd9dd | 65 | break; |
emilienb | 1:a70715783fa2 | 66 | case 'a': |
emilienb | 1:a70715783fa2 | 67 | speed += 0.1; |
emilienb | 0:286c78fcd9dd | 68 | if(speed > 1) speed = 1; |
emilienb | 0:286c78fcd9dd | 69 | pololu.cls(); |
emilienb | 0:286c78fcd9dd | 70 | pololu.locate(0,0); |
emilienb | 0:286c78fcd9dd | 71 | sprintf(buff, "Spd:%3.f",speed ); |
emilienb | 0:286c78fcd9dd | 72 | pololu.print(buff,8); |
emilienb | 1:a70715783fa2 | 73 | |
emilienb | 0:286c78fcd9dd | 74 | break; |
emilienb | 1:a70715783fa2 | 75 | case 'e': |
emilienb | 1:a70715783fa2 | 76 | speed -= 0.1; |
emilienb | 0:286c78fcd9dd | 77 | if(speed < 0) speed = 0; |
emilienb | 0:286c78fcd9dd | 78 | pololu.cls(); |
emilienb | 0:286c78fcd9dd | 79 | pololu.locate(0,0); |
emilienb | 0:286c78fcd9dd | 80 | sprintf(buff, "Spd:%3.f",speed ); |
emilienb | 0:286c78fcd9dd | 81 | pololu.print(buff,8); |
emilienb | 0:286c78fcd9dd | 82 | break; |
emilienb | 1:a70715783fa2 | 83 | case ' ': |
emilienb | 0:286c78fcd9dd | 84 | pololu.stop(); |
emilienb | 0:286c78fcd9dd | 85 | l1 = 1; |
emilienb | 0:286c78fcd9dd | 86 | l2 = 1; |
emilienb | 0:286c78fcd9dd | 87 | l3 = 1; |
emilienb | 0:286c78fcd9dd | 88 | l4 = 1; |
emilienb | 0:286c78fcd9dd | 89 | break; |
emilienb | 0:286c78fcd9dd | 90 | case 'c': |
emilienb | 0:286c78fcd9dd | 91 | pololu.readsensor(capteurs); |
emilienb | 1:a70715783fa2 | 92 | for(int i=0; i<5; i++) |
emilienb | 1:a70715783fa2 | 93 | { |
emilienb | 1:a70715783fa2 | 94 | if(capteurs[i] >= seuil) |
emilienb | 1:a70715783fa2 | 95 | { |
emilienb | 1:a70715783fa2 | 96 | cap_seuil[i] = 1; |
emilienb | 1:a70715783fa2 | 97 | } |
emilienb | 1:a70715783fa2 | 98 | else |
emilienb | 1:a70715783fa2 | 99 | { |
emilienb | 1:a70715783fa2 | 100 | cap_seuil[i] = 0; |
emilienb | 1:a70715783fa2 | 101 | } |
emilienb | 1:a70715783fa2 | 102 | } |
emilienb | 1:a70715783fa2 | 103 | |
emilienb | 1:a70715783fa2 | 104 | if(usb.writable()) |
emilienb | 1:a70715783fa2 | 105 | { |
emilienb | 1:a70715783fa2 | 106 | usb.printf("Valeur capteur : \r\n"); |
emilienb | 1:a70715783fa2 | 107 | usb.printf("Valeurs brutes: %d, %d, %d, %d, %d \r\n", (int)capteurs[0],(int)capteurs[1],(int)capteurs[2],(int)capteurs[3],(int)capteurs[4]); |
emilienb | 1:a70715783fa2 | 108 | usb.printf("Valeurs seuillees: %d, %d, %d, %d, %d \r\n \r\n ",cap_seuil[0],cap_seuil[1],cap_seuil[2],cap_seuil[3],cap_seuil[4]); |
emilienb | 1:a70715783fa2 | 109 | } |
emilienb | 1:a70715783fa2 | 110 | break; |
emilienb | 1:a70715783fa2 | 111 | |
emilienb | 0:286c78fcd9dd | 112 | case 'b': |
emilienb | 0:286c78fcd9dd | 113 | sprintf(buff, "Bat:%3.f",pololu.battery()); |
emilienb | 0:286c78fcd9dd | 114 | pololu.cls(); |
emilienb | 0:286c78fcd9dd | 115 | pololu.locate(0,0); |
emilienb | 0:286c78fcd9dd | 116 | pololu.print(buff,8); |
emilienb | 1:a70715783fa2 | 117 | break; |
emilienb | 1:a70715783fa2 | 118 | case 'y' : |
emilienb | 0:286c78fcd9dd | 119 | speed = 0.3; |
emilienb | 0:286c78fcd9dd | 120 | pololu.forward(speed); |
emilienb | 0:286c78fcd9dd | 121 | wait(3); |
emilienb | 0:286c78fcd9dd | 122 | pololu.stop(); |
emilienb | 0:286c78fcd9dd | 123 | wait(1); |
emilienb | 0:286c78fcd9dd | 124 | pololu.left(speed); |
emilienb | 0:286c78fcd9dd | 125 | wait(2); |
emilienb | 0:286c78fcd9dd | 126 | pololu.right(speed); |
emilienb | 1:a70715783fa2 | 127 | wait(1); |
emilienb | 1:a70715783fa2 | 128 | break; |
emilienb | 1:a70715783fa2 | 129 | |
emilienb | 1:a70715783fa2 | 130 | default : break; |
emilienb | 0:286c78fcd9dd | 131 | } |
emilienb | 0:286c78fcd9dd | 132 | } |
emilienb | 0:286c78fcd9dd | 133 | } |
emilienb | 0:286c78fcd9dd | 134 | } |