Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@2:6a931840aa60, 2021-04-15 (annotated)
- 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?
| User | Revision | Line number | New 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 |