Test

Dependencies:   mbed DRV8825

Committer:
Nanaud
Date:
Sat Jul 18 17:09:08 2020 +0000
Revision:
4:ad9b7355332e
Parent:
debug.cpp@3:3ba377aafdfd
Child:
5:34ed652f8c31
Ajout du debug en Bluetooth (Module HC-05)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nanaud 4:ad9b7355332e 1 // Nom du fichier : debugPC.cpp
Nanaud 0:dc036b67c87c 2 #include "pins.h"
Nanaud 0:dc036b67c87c 3
Nanaud 4:ad9b7355332e 4 // Variables globales & timers
Nanaud 1:2fe8c402ee79 5 Serial pc(USBTX, USBRX);
Nanaud 1:2fe8c402ee79 6 Ticker ticker_affUS;
Nanaud 1:2fe8c402ee79 7 Ticker ticker_affcd;
Nanaud 1:2fe8c402ee79 8 bool aff_US[6];
Nanaud 1:2fe8c402ee79 9 bool aff_cd[4];
Nanaud 3:3ba377aafdfd 10 int cmdType=0;
Nanaud 1:2fe8c402ee79 11
Nanaud 4:ad9b7355332e 12 void serialIT() // avec Tera Term
Nanaud 3:3ba377aafdfd 13 {
Nanaud 0:dc036b67c87c 14 //pc.printf("\n\rserialIT on\n\r");
Nanaud 0:dc036b67c87c 15 static int i=0;
Nanaud 0:dc036b67c87c 16 static char buffer[10]=""; // Tableau qui contient la chaine de caractère rentrée dans le terminal.
Nanaud 0:dc036b67c87c 17 static char cmd[Lcmd]=""; // Variable qui retient que les premiers caractères qui représentent la commande.
Nanaud 4:ad9b7355332e 18
Nanaud 0:dc036b67c87c 19 char tampon = pc.getc();
Nanaud 3:3ba377aafdfd 20
Nanaud 3:3ba377aafdfd 21 if((tampon >= 48 && tampon <=57) || (tampon>=97 && tampon<=122) || tampon==13) {
Nanaud 0:dc036b67c87c 22 buffer[i]=tampon; // Ajout du caractère dans le tableau buffer
Nanaud 0:dc036b67c87c 23 pc.putc(buffer[i]); // Réécriture sur le terminal du caractère envoyé
Nanaud 0:dc036b67c87c 24 i++;
Nanaud 0:dc036b67c87c 25 }
Nanaud 0:dc036b67c87c 26
Nanaud 3:3ba377aafdfd 27 if(buffer[i-1]=='\r') { // Attente un appui sur la touche entrée
Nanaud 0:dc036b67c87c 28 i=0;
Nanaud 0:dc036b67c87c 29 copieTab(buffer,cmd); // Sauvegarde la commande dans le tableau cmd
Nanaud 3:3ba377aafdfd 30
Nanaud 3:3ba377aafdfd 31 switch(cmdType) {
Nanaud 3:3ba377aafdfd 32 case 1 : // Commande test angle
Nanaud 3:3ba377aafdfd 33 StringToAngle(cmd);
Nanaud 3:3ba377aafdfd 34 cmdType=0;
Nanaud 3:3ba377aafdfd 35 break;
Nanaud 3:3ba377aafdfd 36 default : // Commande par défaut
Nanaud 3:3ba377aafdfd 37 cmdChoice(cmd);
Nanaud 3:3ba377aafdfd 38 }
Nanaud 3:3ba377aafdfd 39 }
Nanaud 0:dc036b67c87c 40 }
Nanaud 0:dc036b67c87c 41
Nanaud 3:3ba377aafdfd 42 void copieTab(char *tab1,char *tab2) // Fonction qui recopie un tableau dans un autre
Nanaud 3:3ba377aafdfd 43 {
Nanaud 0:dc036b67c87c 44 //pc.printf("\n\rcopieTab on\n\r");
Nanaud 0:dc036b67c87c 45 //pc.printf("\n\r");
Nanaud 3:3ba377aafdfd 46 for(int j=0; j<Lcmd; j++) {
Nanaud 0:dc036b67c87c 47 tab2[j]=tab1[j];
Nanaud 0:dc036b67c87c 48 //pc.printf("%c",tab2[j]);
Nanaud 0:dc036b67c87c 49 }
Nanaud 0:dc036b67c87c 50 //pc.printf("\n\r");
Nanaud 0:dc036b67c87c 51 }
Nanaud 0:dc036b67c87c 52
Nanaud 3:3ba377aafdfd 53 void cmdChoice(char *cmd) // Fonction qui permet de choisir de l'activation d'une commande
Nanaud 3:3ba377aafdfd 54 {
Nanaud 3:3ba377aafdfd 55 const char *options[]= {
Nanaud 3:3ba377aafdfd 56 "help", //0
Nanaud 3:3ba377aafdfd 57 "usao", //1
Nanaud 3:3ba377aafdfd 58 "us1o", //2
Nanaud 3:3ba377aafdfd 59 "us2o", //3
Nanaud 3:3ba377aafdfd 60 "us3o", //4
Nanaud 3:3ba377aafdfd 61 "us4o", //5
Nanaud 3:3ba377aafdfd 62 "us5o", //6
Nanaud 3:3ba377aafdfd 63 "us6o", //7
Nanaud 3:3ba377aafdfd 64 "tdrv", //8
Nanaud 3:3ba377aafdfd 65 "cdon", //9
Nanaud 3:3ba377aafdfd 66 "cdga", //10
Nanaud 3:3ba377aafdfd 67 "cdgb", //11
Nanaud 3:3ba377aafdfd 68 "tagl", //12
Nanaud 3:3ba377aafdfd 69 0
Nanaud 0:dc036b67c87c 70 };
Nanaud 3:3ba377aafdfd 71
Nanaud 0:dc036b67c87c 72 long option=-1;
Nanaud 3:3ba377aafdfd 73
Nanaud 3:3ba377aafdfd 74 for (long a=0; options[a] && option<0; a++) {
Nanaud 3:3ba377aafdfd 75 if (!strcmp(cmd,options[a]) || strcmp(cmd,options[a])==1) { // strcmp(cmd,options[a])==1 permet de contourner le problème, à revoir !!!
Nanaud 0:dc036b67c87c 76 option=a;
Nanaud 0:dc036b67c87c 77 }
Nanaud 4:ad9b7355332e 78 //pc.printf("res = %d\r\n",strcmp(cmd,options[a]));
Nanaud 0:dc036b67c87c 79 }
Nanaud 3:3ba377aafdfd 80
Nanaud 0:dc036b67c87c 81 switch (option) {
Nanaud 0:dc036b67c87c 82 case 0: //help
Nanaud 4:ad9b7355332e 83 // pc
Nanaud 0:dc036b67c87c 84 pc.printf("\n\n\r###HELP###\n\r");
Nanaud 0:dc036b67c87c 85 pc.printf("usao : Affichage resultats capteurs a ultrasons\n\r");
Nanaud 0:dc036b67c87c 86 pc.printf("usxo : Affichage resultat capteur ultrasons x\n\r");
Nanaud 0:dc036b67c87c 87 pc.printf("tdrv : Lance la fonction test_drv()\n\r");
Nanaud 0:dc036b67c87c 88 pc.printf("cdon : Affichage resultats codeurs\n\r");
Nanaud 0:dc036b67c87c 89 pc.printf("cdgx : Affichage resultats codeur gauche phase x (a ou b)\n\r");
Nanaud 3:3ba377aafdfd 90 pc.printf("tagl : Tourne le robot sur lui-meme avec un angle a preciser\r\n");
Nanaud 0:dc036b67c87c 91 pc.printf("\n\r");
Nanaud 4:ad9b7355332e 92 // bt
Nanaud 4:ad9b7355332e 93 bt.printf("\n\n\r###HELP###\n\r");
Nanaud 4:ad9b7355332e 94 bt.printf("usao : Affichage resultats capteurs a ultrasons\n\r");
Nanaud 4:ad9b7355332e 95 bt.printf("usxo : Affichage resultat capteur ultrasons x\n\r");
Nanaud 4:ad9b7355332e 96 bt.printf("tdrv : Lance la fonction test_drv()\n\r");
Nanaud 4:ad9b7355332e 97 bt.printf("cdon : Affichage resultats codeurs\n\r");
Nanaud 4:ad9b7355332e 98 bt.printf("cdgx : Affichage resultats codeur gauche phase x (a ou b)\n\r");
Nanaud 4:ad9b7355332e 99 bt.printf("tagl : Tourne le robot sur lui-meme avec un angle a preciser\r\n");
Nanaud 4:ad9b7355332e 100 bt.printf("\n\r");
Nanaud 0:dc036b67c87c 101 break;
Nanaud 0:dc036b67c87c 102 case 1: //usao
Nanaud 0:dc036b67c87c 103 pc.printf("Capt US ALL ON/OFF\n\r");
Nanaud 4:ad9b7355332e 104 bt.printf("Capt US ALL ON/OFF\n\r");
Nanaud 3:3ba377aafdfd 105 aff_US[0]=!aff_US[0];
Nanaud 3:3ba377aafdfd 106 aff_US[1]=!aff_US[1];
Nanaud 3:3ba377aafdfd 107 aff_US[2]=!aff_US[2];
Nanaud 3:3ba377aafdfd 108 aff_US[3]=!aff_US[3];
Nanaud 3:3ba377aafdfd 109 aff_US[4]=!aff_US[4];
Nanaud 3:3ba377aafdfd 110 aff_US[5]=!aff_US[5];
Nanaud 0:dc036b67c87c 111 break;
Nanaud 0:dc036b67c87c 112 case 2: //us1o
Nanaud 0:dc036b67c87c 113 pc.printf("Capt US 1 ON/OFF\n\r");
Nanaud 4:ad9b7355332e 114 bt.printf("Capt US 1 ON/OFF\n\r");
Nanaud 0:dc036b67c87c 115 aff_US[0]=!aff_US[0];
Nanaud 0:dc036b67c87c 116 break;
Nanaud 0:dc036b67c87c 117 case 3: //us2o
Nanaud 0:dc036b67c87c 118 pc.printf("Capt US 2 ON/OFF\n\r");
Nanaud 4:ad9b7355332e 119 bt.printf("Capt US 2 ON/OFF\n\r");
Nanaud 0:dc036b67c87c 120 aff_US[1]=!aff_US[1];
Nanaud 0:dc036b67c87c 121 break;
Nanaud 0:dc036b67c87c 122 case 4: //us3o
Nanaud 0:dc036b67c87c 123 pc.printf("Capt US 3 ON/OFF\n\r");
Nanaud 4:ad9b7355332e 124 bt.printf("Capt US 3 ON/OFF\n\r");
Nanaud 0:dc036b67c87c 125 aff_US[2]=!aff_US[2];
Nanaud 0:dc036b67c87c 126 break;
Nanaud 0:dc036b67c87c 127 case 5: //us4o
Nanaud 0:dc036b67c87c 128 pc.printf("Capt US 4 ON/OFF\n\r");
Nanaud 4:ad9b7355332e 129 bt.printf("Capt US 4 ON/OFF\n\r");
Nanaud 0:dc036b67c87c 130 aff_US[3]=!aff_US[3];
Nanaud 0:dc036b67c87c 131 break;
Nanaud 0:dc036b67c87c 132 case 6: //us5o
Nanaud 0:dc036b67c87c 133 pc.printf("Capt US 5 ON/OFF\n\r");
Nanaud 4:ad9b7355332e 134 bt.printf("Capt US 5 ON/OFF\n\r");
Nanaud 0:dc036b67c87c 135 aff_US[4]=!aff_US[4];
Nanaud 0:dc036b67c87c 136 break;
Nanaud 0:dc036b67c87c 137 case 7: //us6o
Nanaud 0:dc036b67c87c 138 pc.printf("Capt US 6 ON/OFF\n\r");
Nanaud 4:ad9b7355332e 139 bt.printf("Capt US 6 ON/OFF\n\r");
Nanaud 0:dc036b67c87c 140 aff_US[5]=!aff_US[5];
Nanaud 0:dc036b67c87c 141 break;
Nanaud 0:dc036b67c87c 142 case 8: //tdrv
Nanaud 0:dc036b67c87c 143 pc.printf("Fonction test_drv()\n\r");
Nanaud 4:ad9b7355332e 144 bt.printf("Fonction test_drv()\n\r");
Nanaud 0:dc036b67c87c 145 test_drv();
Nanaud 0:dc036b67c87c 146 break;
Nanaud 0:dc036b67c87c 147 case 9: //cdon
Nanaud 0:dc036b67c87c 148 pc.printf("Results ALL Encoders ON/OFF\n\r");
Nanaud 4:ad9b7355332e 149 bt.printf("Results ALL Encoders ON/OFF\n\r");
Nanaud 0:dc036b67c87c 150 aff_cd[0]=!aff_cd[0];
Nanaud 0:dc036b67c87c 151 aff_cd[1]=!aff_cd[1];
Nanaud 0:dc036b67c87c 152 break;
Nanaud 0:dc036b67c87c 153 case 10: //cdga
Nanaud 0:dc036b67c87c 154 pc.printf("Results Encoder Left A ON/OFF\n\r");
Nanaud 4:ad9b7355332e 155 bt.printf("Results Encoder Left A ON/OFF\n\r");
Nanaud 0:dc036b67c87c 156 aff_cd[0]=!aff_cd[0];
Nanaud 0:dc036b67c87c 157 break;
Nanaud 0:dc036b67c87c 158 case 11: //cdgb
Nanaud 0:dc036b67c87c 159 pc.printf("Results Encoder Left B ON/OFF\n\r");
Nanaud 4:ad9b7355332e 160 bt.printf("Results Encoder Left B ON/OFF\n\r");
Nanaud 0:dc036b67c87c 161 aff_cd[1]=!aff_cd[1];
Nanaud 0:dc036b67c87c 162 break;
Nanaud 3:3ba377aafdfd 163 case 12: //tagl
Nanaud 3:3ba377aafdfd 164 pc.printf("Cmd Angle robot\r\n");
Nanaud 3:3ba377aafdfd 165 pc.printf("Angle (entre 0 et 360 degres sous la forme xxx): ");
Nanaud 4:ad9b7355332e 166 bt.printf("Cmd Angle robot\r\n");
Nanaud 4:ad9b7355332e 167 bt.printf("Angle (entre 0 et 360 degres sous la forme xxx): ");
Nanaud 3:3ba377aafdfd 168 cmdType=1;
Nanaud 3:3ba377aafdfd 169 break;
Nanaud 0:dc036b67c87c 170 default:
Nanaud 0:dc036b67c87c 171 pc.printf("Commande invalide\n\r");
Nanaud 4:ad9b7355332e 172 bt.printf("Commande invalide\n\r");
Nanaud 0:dc036b67c87c 173 }
Nanaud 0:dc036b67c87c 174 }
Nanaud 0:dc036b67c87c 175
Nanaud 3:3ba377aafdfd 176 void StringToAngle(char *cmd)
Nanaud 3:3ba377aafdfd 177 {
Nanaud 3:3ba377aafdfd 178 int cmd2 = 0;
Nanaud 3:3ba377aafdfd 179 cmd2 += (cmd[0]-48)*100;
Nanaud 3:3ba377aafdfd 180 cmd2 += (cmd[1]-48)*10;
Nanaud 3:3ba377aafdfd 181 cmd2 += (cmd[2]-48)*1;
Nanaud 3:3ba377aafdfd 182
Nanaud 3:3ba377aafdfd 183 if (cmd2>=0 && cmd2<=360) {
Nanaud 3:3ba377aafdfd 184 pc.printf("\r\nCommande envoyee au robot : %d\r\n",cmd2);
Nanaud 4:ad9b7355332e 185 bt.printf("\r\nCommande envoyee au robot : %d\r\n",cmd2);
Nanaud 3:3ba377aafdfd 186 testAngle(cmd2);
Nanaud 3:3ba377aafdfd 187 } else {
Nanaud 3:3ba377aafdfd 188 pc.printf("\r\nAngle incorrect\r\n\n");
Nanaud 4:ad9b7355332e 189 bt.printf("\r\nAngle incorrect\r\n\n");
Nanaud 3:3ba377aafdfd 190 cmd2 = 0;
Nanaud 3:3ba377aafdfd 191 }
Nanaud 0:dc036b67c87c 192 }
Nanaud 0:dc036b67c87c 193
Nanaud 3:3ba377aafdfd 194 void affUltrasons()
Nanaud 3:3ba377aafdfd 195 {
Nanaud 4:ad9b7355332e 196 // pc
Nanaud 4:ad9b7355332e 197 if(aff_US[0]) pc.printf("Tps US1 = %5.0f uS\n\r", us_out[0]);
Nanaud 4:ad9b7355332e 198 if(aff_US[1]) pc.printf("Tps US2 = %5.0f uS\n\r", us_out[1]);
Nanaud 4:ad9b7355332e 199 if(aff_US[2]) pc.printf("Tps US3 = %5.0f uS\n\r", us_out[2]);
Nanaud 4:ad9b7355332e 200 if(aff_US[3]) pc.printf("Tps US4 = %5.0f uS\n\r", us_out[3]);
Nanaud 4:ad9b7355332e 201 if(aff_US[4]) pc.printf("Tps US5 = %5.0f uS\n\r", us_out[4]);
Nanaud 4:ad9b7355332e 202 if(aff_US[5]) pc.printf("Tps US6 = %5.0f uS\n\r", us_out[5]);
Nanaud 4:ad9b7355332e 203 if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) pc.printf("\n\r");
Nanaud 4:ad9b7355332e 204
Nanaud 4:ad9b7355332e 205 // bt
Nanaud 4:ad9b7355332e 206 if(aff_US[0]) bt.printf("Tps US1 = %5.0f uS\n\r", us_out[0]);
Nanaud 4:ad9b7355332e 207 if(aff_US[1]) bt.printf("Tps US2 = %5.0f uS\n\r", us_out[1]);
Nanaud 4:ad9b7355332e 208 if(aff_US[2]) bt.printf("Tps US3 = %5.0f uS\n\r", us_out[2]);
Nanaud 4:ad9b7355332e 209 if(aff_US[3]) bt.printf("Tps US4 = %5.0f uS\n\r", us_out[3]);
Nanaud 4:ad9b7355332e 210 if(aff_US[4]) bt.printf("Tps US5 = %5.0f uS\n\r", us_out[4]);
Nanaud 4:ad9b7355332e 211 if(aff_US[5]) bt.printf("Tps US6 = %5.0f uS\n\r", us_out[5]);
Nanaud 4:ad9b7355332e 212 if(aff_US[0]||aff_US[1]||aff_US[2]||aff_US[3]||aff_US[4]||aff_US[5]) bt.printf("\n\r");
Nanaud 3:3ba377aafdfd 213 }
Nanaud 3:3ba377aafdfd 214
Nanaud 3:3ba377aafdfd 215 void affCodeurs()
Nanaud 3:3ba377aafdfd 216 {
Nanaud 4:ad9b7355332e 217 if(aff_cd[0]) pc.printf("CdgA = %d\n\r", cpt_cdgA);
Nanaud 4:ad9b7355332e 218 //if(aff_cd[1]) pc.printf("CdgB = %d\n\r", cpt_cdgB);
Nanaud 4:ad9b7355332e 219
Nanaud 4:ad9b7355332e 220 if(aff_cd[0]) bt.printf("CdgA = %d\n\r", cpt_cdgA);
Nanaud 4:ad9b7355332e 221 //if(aff_cd[1]) bt.printf("CdgB = %d\n\r", cpt_cdgB);
Nanaud 3:3ba377aafdfd 222 }