Waël Hazami / Mbed 2 deprecated Lib_PIXY2

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }