Souhail EL MAKTAFI / Mbed 2 deprecated mbed_blinky

Dependencies:   mbed mbed-rtos

Committer:
sounns123
Date:
Thu Apr 15 15:46:22 2021 +0000
Revision:
2:6a931840aa60
Parent:
1:b35aa89630a4
test pixy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sounns123 0:185ef65e971d 1 #include "PIXY2.h"
sounns123 0:185ef65e971d 2
sounns123 2:6a931840aa60 3 DigitalIn OnOff(p19);
sounns123 2:6a931840aa60 4 //DigitalOut led2(LED2);
sounns123 2:6a931840aa60 5 // DigitalOut led3(LED3);
sounns123 2:6a931840aa60 6 DigitalOut led4(LED4);
sounns123 2:6a931840aa60 7
sounns123 1:b35aa89630a4 8
sounns123 1:b35aa89630a4 9 #define NB_FONCTIONNALITES 8
sounns123 1:b35aa89630a4 10
sounns123 0:185ef65e971d 11
sounns123 1:b35aa89630a4 12
sounns123 1:b35aa89630a4 13 // debug en cas d'erreur de checksum
sounns123 1:b35aa89630a4 14 int sommeDeControle,sommeRecue;
sounns123 1:b35aa89630a4 15
sounns123 1:b35aa89630a4 16 // Gestion appui sur BP
sounns123 1:b35aa89630a4 17 bool FLAG_BP = true;
sounns123 1:b35aa89630a4 18 int nb_appui = 0;
sounns123 1:b35aa89630a4 19
sounns123 2:6a931840aa60 20 /*void appui_BP(void)
sounns123 1:b35aa89630a4 21 {
sounns123 2:6a931840aa60 22 if(OnOff)
sounns123 2:6a931840aa60 23 {// pour éviter les rebonds
sounns123 2:6a931840aa60 24 while(OnOff);
sounns123 2:6a931840aa60 25 nb_appui++; // = (nb_appui+1)%NB_FONCTIONNALITES;
sounns123 2:6a931840aa60 26 }
sounns123 2:6a931840aa60 27 }*/
sounns123 1:b35aa89630a4 28
sounns123 1:b35aa89630a4 29 /* PROGRAMME DE TEST DES FEATURES FONCTIONNEL */
sounns123 1:b35aa89630a4 30
sounns123 0:185ef65e971d 31 int main(void)
sounns123 0:185ef65e971d 32 {
sounns123 1:b35aa89630a4 33 PIXY2 maPixy(p28, p27); // PC_12 : UART5_TX --- PD_2 : UART5_RX
sounns123 0:185ef65e971d 34
sounns123 2:6a931840aa60 35 /* T_pixy2Version *version;
sounns123 1:b35aa89630a4 36 T_pixy2Resolution *resolution;
sounns123 1:b35aa89630a4 37 T_pixy2ReturnCode *framerate;
sounns123 2:6a931840aa60 38 T_pixy2Pixel *pixel;*/
sounns123 1:b35aa89630a4 39 T_pixy2ErrorCode cr;
sounns123 1:b35aa89630a4 40
sounns123 1:b35aa89630a4 41 // Initialisations
sounns123 0:185ef65e971d 42
sounns123 1:b35aa89630a4 43
sounns123 2:6a931840aa60 44
sounns123 2:6a931840aa60 45 Timer compteur_OnOff;
sounns123 2:6a931840aa60 46
sounns123 2:6a931840aa60 47
sounns123 2:6a931840aa60 48 compteur_OnOff.start();
sounns123 1:b35aa89630a4 49
sounns123 2:6a931840aa60 50 /* typedef enum {IDLE, SND, CHECKSUM_ERROR, TIMEOUT, OK} T_state;
sounns123 2:6a931840aa60 51 T_state etat = IDLE;*/
sounns123 2:6a931840aa60 52
sounns123 2:6a931840aa60 53
sounns123 1:b35aa89630a4 54
sounns123 1:b35aa89630a4 55 while(1) {
sounns123 2:6a931840aa60 56 cr = maPixy.pixy2_getAllFeature(PIXY2_VECTOR /* | PIXY2_INTERSECTION | PIXY2_BARCODE*/); // retest le programme car cette requête était mal placé
sounns123 2:6a931840aa60 57 if(cr != PIXY2_BUSY)
sounns123 2:6a931840aa60 58 {
sounns123 2:6a931840aa60 59 if(cr <= 7)
sounns123 2:6a931840aa60 60 {
sounns123 2:6a931840aa60 61 if((cr & PIXY2_VECTOR) == PIXY2_VECTOR)
sounns123 2:6a931840aa60 62 {
sounns123 2:6a931840aa60 63 if(maPixy.Pixy2_numVectors == 1)
sounns123 2:6a931840aa60 64 {
sounns123 2:6a931840aa60 65
sounns123 2:6a931840aa60 66 }
sounns123 2:6a931840aa60 67
sounns123 2:6a931840aa60 68 else if(maPixy.Pixy2_numVectors == 2)
sounns123 2:6a931840aa60 69 {
sounns123 2:6a931840aa60 70
sounns123 2:6a931840aa60 71 }
sounns123 2:6a931840aa60 72
sounns123 2:6a931840aa60 73
sounns123 2:6a931840aa60 74 else
sounns123 2:6a931840aa60 75 {
sounns123 2:6a931840aa60 76
sounns123 2:6a931840aa60 77 }
sounns123 2:6a931840aa60 78
sounns123 2:6a931840aa60 79
sounns123 2:6a931840aa60 80 }
sounns123 2:6a931840aa60 81
sounns123 2:6a931840aa60 82 }
sounns123 2:6a931840aa60 83
sounns123 2:6a931840aa60 84
sounns123 2:6a931840aa60 85
sounns123 2:6a931840aa60 86 /* switch (etat) {
sounns123 1:b35aa89630a4 87 case IDLE :
sounns123 2:6a931840aa60 88 appui_BP();
sounns123 2:6a931840aa60 89 if(compteur_OnOff.read()>=10)
sounns123 2:6a931840aa60 90 {
sounns123 1:b35aa89630a4 91 timeOut.reset();
sounns123 1:b35aa89630a4 92 etat = SND;
sounns123 1:b35aa89630a4 93 }
sounns123 1:b35aa89630a4 94 break;
sounns123 1:b35aa89630a4 95
sounns123 1:b35aa89630a4 96 case SND :
sounns123 1:b35aa89630a4 97 switch(nb_appui) {
sounns123 1:b35aa89630a4 98 case 0:
sounns123 2:6a931840aa60 99 cr = maPixy.pixy2_setLED(0,0,255);
sounns123 2:6a931840aa60 100 // cr = maPixy.pixy2_getVersion(&version);
sounns123 2:6a931840aa60 101 led4=1;
sounns123 2:6a931840aa60 102 led2=1;
sounns123 2:6a931840aa60 103 led3=1;
sounns123 1:b35aa89630a4 104 break;
sounns123 1:b35aa89630a4 105
sounns123 1:b35aa89630a4 106 case 1:
sounns123 1:b35aa89630a4 107 cr = maPixy.pixy2_getResolution(&resolution);
sounns123 1:b35aa89630a4 108 break;
sounns123 1:b35aa89630a4 109
sounns123 1:b35aa89630a4 110 case 2:
sounns123 1:b35aa89630a4 111 cr = maPixy.pixy2_getFPS(&framerate);
sounns123 1:b35aa89630a4 112 break;
sounns123 1:b35aa89630a4 113
sounns123 1:b35aa89630a4 114 case 3:
sounns123 1:b35aa89630a4 115 cr = maPixy.pixy2_getRGB(resolution->pixFrameWidth / 2, resolution->pixFrameHeight / 2, 0, &pixel);
sounns123 1:b35aa89630a4 116 break;
sounns123 1:b35aa89630a4 117
sounns123 1:b35aa89630a4 118 case 4:
sounns123 1:b35aa89630a4 119 cr = maPixy.pixy2_setLED(0,0,255);
sounns123 2:6a931840aa60 120
sounns123 1:b35aa89630a4 121 break;
sounns123 1:b35aa89630a4 122
sounns123 1:b35aa89630a4 123 case 5:
sounns123 1:b35aa89630a4 124 cr = maPixy.pixy2_setLamp(1,1);
sounns123 1:b35aa89630a4 125 break;
sounns123 1:b35aa89630a4 126
sounns123 1:b35aa89630a4 127 case 6:
sounns123 1:b35aa89630a4 128 cr = maPixy.pixy2_setCameraBrightness(255);
sounns123 1:b35aa89630a4 129 break;
sounns123 0:185ef65e971d 130
sounns123 1:b35aa89630a4 131 case 7:
sounns123 1:b35aa89630a4 132 cr = maPixy.pixy2_getAllFeature(PIXY2_VECTOR | PIXY2_INTERSECTION | PIXY2_BARCODE);
sounns123 1:b35aa89630a4 133 if(cr != PIXY2_BUSY)
sounns123 1:b35aa89630a4 134 {
sounns123 1:b35aa89630a4 135 if(cr <= 7)
sounns123 1:b35aa89630a4 136 {
sounns123 1:b35aa89630a4 137 if((cr & PIXY2_VECTOR) == PIXY2_VECTOR)
sounns123 1:b35aa89630a4 138 {
sounns123 1:b35aa89630a4 139 printf("\n\r%d vecteurs detect\n", maPixy.Pixy2_numVectors);
sounns123 1:b35aa89630a4 140 etat = OK;
sounns123 1:b35aa89630a4 141 }
sounns123 1:b35aa89630a4 142 if((cr & PIXY2_INTERSECTION) == PIXY2_INTERSECTION)
sounns123 1:b35aa89630a4 143 {
sounns123 1:b35aa89630a4 144 printf("\n\r%d intersections detect\n", maPixy.Pixy2_numIntersections);
sounns123 1:b35aa89630a4 145 etat = OK;
sounns123 1:b35aa89630a4 146 }
sounns123 1:b35aa89630a4 147 if((cr & PIXY2_BARCODE) == PIXY2_BARCODE)
sounns123 1:b35aa89630a4 148 {
sounns123 1:b35aa89630a4 149 printf("\n\r%d codes barre detect\n", maPixy.Pixy2_numBarcodes);
sounns123 1:b35aa89630a4 150 etat = OK;
sounns123 1:b35aa89630a4 151 }
sounns123 1:b35aa89630a4 152 }
sounns123 1:b35aa89630a4 153 else if(cr > 7)
sounns123 1:b35aa89630a4 154 printf("Aucune feature recue !\n");
sounns123 1:b35aa89630a4 155 }
sounns123 1:b35aa89630a4 156 break;
sounns123 1:b35aa89630a4 157 }
sounns123 0:185ef65e971d 158
sounns123 1:b35aa89630a4 159 // Test des possibles erreurs
sounns123 1:b35aa89630a4 160 if (cr == PIXY2_BAD_CHECKSUM)
sounns123 1:b35aa89630a4 161 etat = CHECKSUM_ERROR;
sounns123 1:b35aa89630a4 162 else if (timeOut.read()>2.f)
sounns123 1:b35aa89630a4 163 etat = TIMEOUT;
sounns123 1:b35aa89630a4 164 else if (cr == PIXY2_OK)
sounns123 1:b35aa89630a4 165 etat = OK;
sounns123 1:b35aa89630a4 166 else if (cr != PIXY2_BUSY)
sounns123 1:b35aa89630a4 167 printf("Valeur de retour : %d\n", cr);
sounns123 1:b35aa89630a4 168 break;
sounns123 1:b35aa89630a4 169
sounns123 1:b35aa89630a4 170 case OK :
sounns123 1:b35aa89630a4 171 switch(nb_appui) {
sounns123 1:b35aa89630a4 172 case 0:
sounns123 1:b35aa89630a4 173 printf("Version de la camera : %s\n", version->pixHFString);
sounns123 1:b35aa89630a4 174 break;
sounns123 1:b35aa89630a4 175
sounns123 1:b35aa89630a4 176 case 1:
sounns123 1:b35aa89630a4 177 printf("Resolution de la camera : %d - %d\n", resolution->pixFrameWidth, resolution->pixFrameHeight);
sounns123 1:b35aa89630a4 178 break;
sounns123 1:b35aa89630a4 179
sounns123 1:b35aa89630a4 180 case 2:
sounns123 1:b35aa89630a4 181 printf("Framerate : %d\n\r", framerate->pixReturn);
sounns123 1:b35aa89630a4 182 break;
sounns123 1:b35aa89630a4 183
sounns123 1:b35aa89630a4 184 case 3:
sounns123 1:b35aa89630a4 185 printf("Pixel au centre de l'ecran: R : %d, G : %d, B : %d\n", pixel->pixRed, pixel->pixGreen, pixel->pixBlue);
sounns123 1:b35aa89630a4 186 break;
sounns123 1:b35aa89630a4 187
sounns123 1:b35aa89630a4 188 case 4:
sounns123 1:b35aa89630a4 189 printf("Led bleue allumee !\n");
sounns123 1:b35aa89630a4 190 break;
sounns123 1:b35aa89630a4 191
sounns123 1:b35aa89630a4 192 case 5:
sounns123 1:b35aa89630a4 193 printf("Leds blanches allumees !\n");
sounns123 1:b35aa89630a4 194 break;
sounns123 1:b35aa89630a4 195
sounns123 1:b35aa89630a4 196 case 6:
sounns123 1:b35aa89630a4 197 printf("Luminosite de la camera a fond !\n");
sounns123 1:b35aa89630a4 198 break;
sounns123 1:b35aa89630a4 199
sounns123 1:b35aa89630a4 200 case 7:
sounns123 1:b35aa89630a4 201 for (int i=0; i<maPixy.Pixy2_numVectors; i++)
sounns123 1:b35aa89630a4 202 {
sounns123 1:b35aa89630a4 203 printf("\n1er pt du %de vecteur : x: %d, y: %d\n", i+1, maPixy.Pixy2_vectors[i].pixX0, maPixy.Pixy2_vectors[i].pixY0);
sounns123 1:b35aa89630a4 204 printf("2e pt du %de vecteur : x: %d, y: %d\n", i+1, maPixy.Pixy2_vectors[i].pixX1, maPixy.Pixy2_vectors[i].pixY1);
sounns123 1:b35aa89630a4 205 }
sounns123 1:b35aa89630a4 206 for (int i=0; i<maPixy.Pixy2_numIntersections; i++)
sounns123 1:b35aa89630a4 207 {
sounns123 1:b35aa89630a4 208 printf("\npt de l'intersection %d : x: %d, y: %d\n", i+1, maPixy.Pixy2_intersections[i].pixX, maPixy.Pixy2_intersections[i].pixY);
sounns123 1:b35aa89630a4 209 printf("Nombre de droites sur cette intersection : %d\n", maPixy.Pixy2_intersections[i].pixN);
sounns123 1:b35aa89630a4 210 }
sounns123 1:b35aa89630a4 211 for (int i=0; i<maPixy.Pixy2_numBarcodes; i++)
sounns123 1:b35aa89630a4 212 {
sounns123 1:b35aa89630a4 213 printf("\nCoordonn\202es du code barre %d : x: %d, y: %d\n", i+1, maPixy.Pixy2_barcodes[i].pixX, maPixy.Pixy2_barcodes[i].pixY);
sounns123 1:b35aa89630a4 214 printf("Nombre associ\202 a ce code barre : %d\n", maPixy.Pixy2_barcodes[i].pixCode);
sounns123 1:b35aa89630a4 215 }
sounns123 1:b35aa89630a4 216 break;
sounns123 1:b35aa89630a4 217 }
sounns123 2:6a931840aa60 218 nb_appui=0;
sounns123 2:6a931840aa60 219 compteur_OnOff.reset();
sounns123 1:b35aa89630a4 220 etat = IDLE;
sounns123 1:b35aa89630a4 221 break;
sounns123 1:b35aa89630a4 222
sounns123 1:b35aa89630a4 223 case CHECKSUM_ERROR :
sounns123 1:b35aa89630a4 224 printf("Erreur de CheckSum...\n");
sounns123 1:b35aa89630a4 225 printf("CheckSum Recu : %d\n", sommeRecue);
sounns123 1:b35aa89630a4 226 printf("CheckSum Calcule : %d\n", sommeDeControle);
sounns123 2:6a931840aa60 227 nb_appui=0;
sounns123 2:6a931840aa60 228 compteur_OnOff.reset();
sounns123 1:b35aa89630a4 229 etat = IDLE;
sounns123 1:b35aa89630a4 230 break;
sounns123 1:b35aa89630a4 231
sounns123 1:b35aa89630a4 232 case TIMEOUT :
sounns123 1:b35aa89630a4 233 printf("Erreur Timeout...\n\rError %d\n", cr);
sounns123 2:6a931840aa60 234 // maPixy.affDataSize();
sounns123 2:6a931840aa60 235 nb_appui=0;
sounns123 2:6a931840aa60 236 compteur_OnOff.reset();
sounns123 1:b35aa89630a4 237 etat = IDLE;
sounns123 1:b35aa89630a4 238 break;
sounns123 2:6a931840aa60 239 }*/
sounns123 0:185ef65e971d 240 }
sounns123 2:6a931840aa60 241 }
sounns123 2:6a931840aa60 242 }
sounns123 2:6a931840aa60 243