Version2

Dependencies:   mbed m3pi_pops

Committer:
emilienb
Date:
Wed Nov 13 16:26:39 2019 +0000
Revision:
1:a70715783fa2
Parent:
0:286c78fcd9dd
v2

Who changed what in which revision?

UserRevisionLine numberNew 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 }