Programme de test à priori fonctionnel avec la version 2018 de la carte

Dependencies:   PwmIn mbed Encoder_Nucleo_16_bits

Revision:
1:d95546f84105
Parent:
0:f00e68bef80c
Child:
2:1d440e938c44
--- a/main.cpp	Sat May 27 15:15:41 2017 +0000
+++ b/main.cpp	Mon May 29 16:23:47 2017 +0000
@@ -78,9 +78,9 @@
  * PA_7    -> CNY2 (Analog In)
  * PA_8    -> Servomoteur (PWM Out)
  * PA_9    -> US Trigger #3 (Digital Out)
- * PA_10   -> I (Encodeur Droit) (IRQ In)
+ * PA_10   -> US Echo #1 (Pwm In)
  * PA_11   -> US Echo #2 (Pwm In)
- * PA_12   -> US Echo #1 (Pwm In)
+ * PA_12   -> SS (SPI Slave Select) (Digital Out)
  * PA_13
  * PA_14
  * PA_15   -> Boussole (Pwm In)
@@ -123,7 +123,7 @@
  * PD_2    -> Led2 (Digital Out)
  */
 
-Serial      Pixy    (PA_0, PA_1, 115200);
+Serial      Pixy    (PA_0, PA_1, 230400);
 Serial      Pc      (PA_2, PA_3, 460800);
 
 AnalogIn    CNY1    (PC_4);
@@ -143,22 +143,22 @@
 DigitalOut  En      (PC_9);
 DigitalOut  SensG   (PC_8);
 DigitalOut  SensD   (PC_6);
+DigitalOut  SS      (PA_12);
 
-InterruptIn Echo1   (PA_12);
+InterruptIn Echo1   (PA_10);
 InterruptIn Echo2   (PA_11);
 InterruptIn Echo3   (PB_12);
 InterruptIn BP      (PC_13);
 InterruptIn IG      (PC_7);
-InterruptIn ID      (PA_10);
+
+PwmIn       PWMG    (PB_2);
+PwmIn       PWMD    (PB_1);
+PwmIn       PWMB    (PA_15);
 
 PwmOut      Pwm_MG  (PB_10);
 PwmOut      Pwm_MD  (PB_3);
 PwmOut      Servo   (PA_8);
 
-PwmIn       PWMG    (PB_2);
-PwmIn       PWMD    (PB_1);
-PwmIn       PWMB    (PA_15);
-
 I2C         Bus_I2C (PB_9, PB_8);
 
 SPI         MotG    (PC_12, PC_11, PC_10);
@@ -188,7 +188,7 @@
 
 //  Dialogue avec la Pixy
 T_pixyData  Pixy_FIFO[20];
-Byte        Pixy_nbObjet = 0, Pixy_wObjet = 0, pixy_rObjet = 0;
+Byte        Pixy_nbObjet = 0, Pixy_wObjet = 0, Pixy_rObjet = 0;
 
 // Gestion des capteurs Ultrason
 long        Echo1Start, Echo2Start, Echo3Start;
@@ -218,7 +218,6 @@
 void echo2Rise ()
 {
     Echo2Start = temps.read_us();
-    Led2 = !Led2;
 }
 
 void echo3Rise ()
@@ -252,6 +251,7 @@
     static int          Pixy_synced = 0;
     int i;
 
+    Led2 = ! Led2;
     if (!Pixy_synced) {                                                     // On n'a pas trouvé le départ (0x55aa55aa ou 0x55aa56aa)
         tmpBuffer.tab[bytecount] = Pixy.getc();                             // On stocke l'octet reçu dans la première case dispo du tableau temporaire
         if (bytecount < 3) {                                                // Si on n'a pas encore reçu les 4 premier octets
@@ -317,8 +317,8 @@
     Echo2.fall (&echo2Fall);
     Echo3.fall (&echo3Fall);
 
+    BP.enable_irq();
     IG.enable_irq();
-    ID.enable_irq();
     Echo1.enable_irq();
     Echo2.enable_irq();
     Echo3.enable_irq();
@@ -435,18 +435,18 @@
                         FlagTickLed = 0;
                     }
 
-                    if (((Tick%150)==0)&& FlagTick) {
+                    if (((Tick%150)==0) && FlagTick) {
                         FlagTick = 0;
                         if (BOUSSOLE_check==0) {
                             CAP_PWM = ((PWMB.pulsewidth()*1000)-1)*10;
-                            Pc.printf ("\r PWM = %4.1lf\t", CAP_PWM);
+                            Pc.printf ("\r PWM = %4.1lf", CAP_PWM);
                         }
-                        if (I2C_check==0) {
+                        //if (I2C_check==0) {
                             Bus_I2C.write(BOUSSOLE_adress,BOUSSOLE_status, 1, true);
                             Bus_I2C.read (BOUSSOLE_adress,I2C_registerValue,4);
                             CAP_I2C = (double)(((unsigned short)I2C_registerValue[2]<<8)+(unsigned short)I2C_registerValue[3])/10.0;
-                            Pc.printf ("\t I2C = %4.1lf\r", CAP_I2C);
-                        }
+                            Pc.printf ("\r\t\t I2C = %4.1lf", CAP_I2C);
+                        //}
                     }
                 } while(!Pc.readable());
                 MENU_choix = Pc.getc();
@@ -601,82 +601,91 @@
                 Pc.printf ("\n\n\rPixy\n");
                 Pc.printf ("\rAppuyez sur Entree pour quitter\n");
                 do {
-                    if ((Tick%2)==0) {
+                    if (((Tick%50)==0) && FlagTick) {
+                        FlagTick = 0;
                         switch (phase) {
                             case 0 :
                                 PIXY_red += 5;
-                                if (PIXY_red == 255) phase = 1;
+                                if (PIXY_red == 255) {
+                                    phase = 1;
+                                    //Pc.printf ("\rPhase  1");
+                                }
                                 break;
                             case 1 :
                                 PIXY_green += 5;
-                                if (PIXY_green == 255) phase = 2;
+                                if (PIXY_green == 255) {
+                                    phase = 2;
+                                    //Pc.printf ("\rPhase  2");
+                                }
                                 break;
                             case 2 :
                                 PIXY_red -= 5;
-                                if (PIXY_red == 0) phase = 3;
+                                if (PIXY_red == 0)  {
+                                    phase = 3;
+                                    //Pc.printf ("\rPhase  3");
+                                }
                                 break;
                             case 3 :
                                 PIXY_blue += 5;
-                                if (PIXY_blue == 255) phase = 4;
+                                if (PIXY_blue == 255)  {
+                                    phase = 4;
+                                    //Pc.printf ("\rPhase  4");
+                                }
                                 break;
                             case 4 :
                                 PIXY_green -= 5;
-                                if (PIXY_green == 0) phase = 5;
+                                if (PIXY_green == 0)  {
+                                    phase = 5;
+                                    //Pc.printf ("\rPhase  5");
+                                }
                                 break;
                             case 5 :
                                 PIXY_red += 5;
-                                if (PIXY_red == 255) phase = 6;
+                                if (PIXY_red == 255)  {
+                                    phase = 6;
+                                    //Pc.printf ("\rPhase  6");
+                                }
                                 break;
                             case 6 :
                                 PIXY_green += 5;
-                                if (PIXY_green == 255) phase = 7;
+                                if (PIXY_green == 255)  {
+                                    phase = 7;
+                                    //Pc.printf ("\rPhase  7");
+                                }
                                 break;
                             case 7 :
                                 PIXY_red -= 5;
-                                if (PIXY_red == 0) phase = 8;
-                                break;
-                            case 8 :
                                 PIXY_green -= 5;
-                                if (PIXY_green == 0) phase = 9;
-                                break;
-                            case 9 :
-                                PIXY_red += 5;
-                                if (PIXY_red == 255) phase = 10;
-                                break;
-                            case 10 :
-                                PIXY_blue -= 5;
-                                if (PIXY_blue == 0) phase = 11;
-                                break;
-                            case 11 :
-                                PIXY_green += 5;
-                                if (PIXY_green == 255) phase = 12;
-                                break;
-                            case 12 :
-                                PIXY_green += 5;
-                                if (PIXY_green == 255) phase = 13;
-                                break;
-                            case 13 :
-                                PIXY_red -= 5;
-                                if (PIXY_red == 0) phase = 14;
-                                break;
-                            case 14 :
-                                PIXY_green -= 5;
-                                if (PIXY_green == 0) phase = 0;
+                                PIXY_blue -=5;
+                                if (PIXY_red == 0)  {
+                                    phase = 0;
+                                    //Pc.printf ("\rPhase  0");
+                                }
                                 break;
                         }
                         Pixy.putc(0);
-                        Pixy.putc(0xFF);
+                        Pixy.putc(0xFD);
                         Pixy.putc(PIXY_red);
                         Pixy.putc(PIXY_green);
                         Pixy.putc(PIXY_blue);
 
-                        if ((Tick%50)==0) {
-                            Pc.printf ("\r Nombre d'objets detecte = %d",Pixy_nbObjet);
-                            FlagPixy = 0;
-                            Pixy_nbObjet = 0;
-                        }
+                        while (Pixy_nbObjet) {
+                            Pc.printf ("\r%5hd = %5hd,%5hd : %5hdx%5hd", Pixy_FIFO[Pixy_rObjet].CCbloc.signature, Pixy_FIFO[Pixy_rObjet].CCbloc.x, Pixy_FIFO[Pixy_rObjet].CCbloc.y, Pixy_FIFO[Pixy_rObjet].CCbloc.width, Pixy_FIFO[Pixy_rObjet].CCbloc.height);
+                            
+                            if (Pixy_nbObjet>1) Pc.printf("\n");
+                        
+                            if (Pixy_rObjet<19) Pixy_rObjet++;
+                            else Pixy_rObjet = 0;
+
+                            Pixy_nbObjet--;
+                        }                                
+                        FlagPixy = 0;
                     }
-                    if ((Tick%100)==0) Led1 = !Led1;
+
+                    if (FlagTickLed) {
+                        Led1 = !Led1;
+                        FlagTickLed = 0;
+                    }
                 } while(!Pc.readable());
                 MENU_choix = Pc.getc();
                 break;