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
00001 #include "pixy2.h" 00002 00003 #define NB_FONCTIONNALITES 8 00004 00005 Serial pc(USBTX, USBRX, 9600); 00006 00007 // debug en cas d'erreur de checksum 00008 int sommeDeControle,sommeRecue; 00009 00010 // Gestion appui sur BP 00011 bool FLAG_BP = false; 00012 int nb_appui = -1; 00013 00014 void appui_BP(void) 00015 { 00016 if(!FLAG_BP) // pour éviter les rebonds 00017 nb_appui = (nb_appui+1)%NB_FONCTIONNALITES; 00018 FLAG_BP = true; 00019 } 00020 00021 /* PROGRAMME DE TEST DES FEATURES FONCTIONNEL */ 00022 00023 int main(void) 00024 { 00025 PIXY2 maPixy(PC_12, PD_2); // PC_12 : UART5_TX --- PD_2 : UART5_RX 00026 00027 T_pixy2Version *version; 00028 T_pixy2Resolution *resolution; 00029 T_pixy2ReturnCode *framerate; 00030 T_pixy2Pixel *pixel; 00031 T_pixy2ErrorCode cr; 00032 00033 // Initialisations 00034 InterruptIn BP(USER_BUTTON); 00035 BP.rise(&appui_BP); 00036 00037 Timer timeOut; 00038 timeOut.start(); 00039 00040 typedef enum {IDLE, SND, CHECKSUM_ERROR, TIMEOUT, OK} T_state; 00041 T_state etat = IDLE; 00042 00043 while(1) { 00044 00045 switch (etat) { 00046 case IDLE : 00047 if (FLAG_BP) { 00048 pc.printf("Envoi...\n\r"); 00049 FLAG_BP = false; 00050 timeOut.reset(); 00051 etat = SND; 00052 } 00053 break; 00054 00055 case SND : 00056 switch(nb_appui) { 00057 case 0: 00058 cr = maPixy.pixy2_getVersion(&version); 00059 break; 00060 00061 case 1: 00062 cr = maPixy.pixy2_getResolution(&resolution); 00063 break; 00064 00065 case 2: 00066 cr = maPixy.pixy2_getFPS(&framerate); 00067 break; 00068 00069 case 3: 00070 cr = maPixy.pixy2_getRGB(resolution->pixFrameWidth / 2, resolution->pixFrameHeight / 2, 0, &pixel); 00071 break; 00072 00073 case 4: 00074 cr = maPixy.pixy2_setLED(0,0,255); 00075 break; 00076 00077 case 5: 00078 cr = maPixy.pixy2_setLamp(1,1); 00079 break; 00080 00081 case 6: 00082 cr = maPixy.pixy2_setCameraBrightness(255); 00083 break; 00084 00085 case 7: 00086 cr = maPixy.pixy2_getAllFeature(PIXY2_VECTOR | PIXY2_INTERSECTION | PIXY2_BARCODE); 00087 if(cr != PIXY2_BUSY) 00088 { 00089 if(cr <= 7) 00090 { 00091 if((cr & PIXY2_VECTOR) == PIXY2_VECTOR) 00092 { 00093 pc.printf("\n\r%d vecteurs detect\202s\n\r", maPixy.Pixy2_numVectors); 00094 etat = OK; 00095 } 00096 if((cr & PIXY2_INTERSECTION) == PIXY2_INTERSECTION) 00097 { 00098 pc.printf("\n\r%d intersections detect\202es\n\r", maPixy.Pixy2_numIntersections); 00099 etat = OK; 00100 } 00101 if((cr & PIXY2_BARCODE) == PIXY2_BARCODE) 00102 { 00103 pc.printf("\n\r%d codes barre detect\202s\n\r", maPixy.Pixy2_numBarcodes); 00104 etat = OK; 00105 } 00106 } 00107 else if(cr > 7) 00108 pc.printf("Aucune feature recue !\n\r"); 00109 } 00110 break; 00111 } 00112 00113 // Test des possibles erreurs 00114 if (cr == PIXY2_BAD_CHECKSUM) 00115 etat = CHECKSUM_ERROR; 00116 else if (timeOut.read()>2.f) 00117 etat = TIMEOUT; 00118 else if (cr == PIXY2_OK) 00119 etat = OK; 00120 else if (cr != PIXY2_BUSY) 00121 pc.printf("Valeur de retour : %d\n\r", cr); 00122 break; 00123 00124 case OK : 00125 switch(nb_appui) { 00126 case 0: 00127 pc.printf("Version de la camera : %s\n\r", version->pixHFString); 00128 break; 00129 00130 case 1: 00131 pc.printf("Resolution de la camera : %d - %d\n\r", resolution->pixFrameWidth, resolution->pixFrameHeight); 00132 break; 00133 00134 case 2: 00135 pc.printf("Framerate : %d\n\r", framerate->pixReturn); 00136 break; 00137 00138 case 3: 00139 pc.printf("Pixel au centre de l'\202cran: R : %d, G : %d, B : %d\n\r", pixel->pixRed, pixel->pixGreen, pixel->pixBlue); 00140 break; 00141 00142 case 4: 00143 pc.printf("Led bleue allum\202e !\n\r"); 00144 break; 00145 00146 case 5: 00147 pc.printf("Leds blanches allum\202es !\n\r"); 00148 break; 00149 00150 case 6: 00151 pc.printf("Luminosit\202 de la camera a fond !\n\r"); 00152 break; 00153 00154 case 7: 00155 for (int i=0; i<maPixy.Pixy2_numVectors; i++) 00156 { 00157 pc.printf("\n1er pt du %de vecteur : x: %d, y: %d\n\r", i+1, maPixy.Pixy2_vectors[i].pixX0, maPixy.Pixy2_vectors[i].pixY0); 00158 pc.printf("2e pt du %de vecteur : x: %d, y: %d\n\r", i+1, maPixy.Pixy2_vectors[i].pixX1, maPixy.Pixy2_vectors[i].pixY1); 00159 } 00160 for (int i=0; i<maPixy.Pixy2_numIntersections; i++) 00161 { 00162 pc.printf("\npt de l'intersection %d : x: %d, y: %d\n\r", i+1, maPixy.Pixy2_intersections[i].pixX, maPixy.Pixy2_intersections[i].pixY); 00163 pc.printf("Nombre de droites sur cette intersection : %d\n\r", maPixy.Pixy2_intersections[i].pixN); 00164 } 00165 for (int i=0; i<maPixy.Pixy2_numBarcodes; i++) 00166 { 00167 pc.printf("\nCoordonn\202es du code barre %d : x: %d, y: %d\n\r", i+1, maPixy.Pixy2_barcodes[i].pixX, maPixy.Pixy2_barcodes[i].pixY); 00168 pc.printf("Nombre associ\202 a ce code barre : %d\n\r", maPixy.Pixy2_barcodes[i].pixCode); 00169 } 00170 break; 00171 } 00172 etat = IDLE; 00173 break; 00174 00175 case CHECKSUM_ERROR : 00176 pc.printf("Erreur de CheckSum...\n\r"); 00177 pc.printf("CheckSum Recu : %d\n\r", sommeRecue); 00178 pc.printf("CheckSum Calcule : %d\n\r", sommeDeControle); 00179 etat = IDLE; 00180 break; 00181 00182 case TIMEOUT : 00183 pc.printf("Erreur Timeout...\n\rError %d\n\r", cr); 00184 maPixy.affDataSize(); 00185 etat = IDLE; 00186 break; 00187 } 00188 } 00189 }
Generated on Wed Jul 13 2022 08:41:45 by
1.7.2