IOGS / LaserGame / Project

Dependencies:   mbed nRF24L01P mbed-dsp

Files at this revision

API Documentation at this revision

Comitter:
wafaa_bousaid
Date:
Mon Apr 11 10:08:05 2022 +0000
Parent:
3:627354c99ba0
Commit message:
IOGS / LaserGame / Project

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 627354c99ba0 -r 5c5298ceb3a3 main.cpp
--- a/main.cpp	Mon Mar 21 15:08:26 2022 +0000
+++ b/main.cpp	Mon Apr 11 10:08:05 2022 +0000
@@ -1,13 +1,4 @@
-/****************************************************************************/
-/*  FFT d'un signal   - Nucleo                                              */
-/****************************************************************************/
-/*  LEnsE / Julien VILLEMEJANE       /   Institut d'Optique Graduate School */
-/****************************************************************************/
-/*  Brochage                                                                */
-/*      TO COMPLETE                                                         */
-/****************************************************************************/
-/*  Test réalisé sur Nucléo-L476RG                                          */
-/****************************************************************************/
+//programme a mettre sur les cartes de l'equipe 1, pour l'equipe 2 le calcul sur le tire sur un coequipier doit changer
 
 #include "mbed.h"
 #include "arm_math.h"
@@ -30,6 +21,8 @@
 Serial      debug_pc(USBTX, USBRX);
 Ticker      timer;
 
+DigitalIn bouton(D7);
+
 // nRF24
 char k;
 char    dataToSend[TRANSFER_SIZE] = {0xAA, 0x01, 0x10, 0xF0,0xAA, 0x01, 0x10, 0xF0};
@@ -39,9 +32,9 @@
 nRF24L01P       nRF24_mod(D11, D12, D13, D10, D9, PB_8);
 // MOSI, MISO, SCK, CSN, CE, IRQ
 
-#define largeur_signal_carre_equipe1      4300 /* a  corriger */
-#define largeur_signal_carre_equipe2      40  /* a corriger */
-#define epsilon  200
+#define index_equipe1      73 /* a  corriger */
+#define index_equipe2      64  /* a corriger */
+#define epsilon  2
 
 /* definition des entrees des 3 capteurs: epaule droit, gauche et ventre */
 AnalogIn cap_ventre(A0);
@@ -80,21 +73,24 @@
 void testNRF24(void){
     /* Lecture donnée depuis nRF24 */
     if ( nRF24_mod.readable() ) {
-
+debug_pc.printf(" 1");
         // ...read the data into the receive buffer
         rxDataCnt = nRF24_mod.read( NRF24L01P_PIPE_P0, dataReceived, TRANSFER_SIZE);
-
+debug_pc.printf(" 2");
         // Display the receive buffer contents via the host serial link
         debug_pc.printf("\tD = ");
         for ( int i = 0; i < rxDataCnt; i++ ) {
-            debug_pc.printf(" %x \t", dataReceived[i]);
+            debug_pc.printf(" %d \t", dataReceived[i]);
+            debug_pc.printf(" Recu");
         }
         debug_pc.printf("\r\n");
-    }   
+    }  
+    debug_pc.printf(" 3") ;
     /* Transmission donnée depuis nRF24 */
     if(dataReceived[0] == 0){
         nRF24_mod.setRfFrequency(2400);
         nRF24_mod.write( NRF24L01P_PIPE_P0, dataToSend, TRANSFER_SIZE );
+        debug_pc.printf( "Nombre de point equipe 1: %d \r \n Nombre de point equipe 2: %d \r \n, largeur du signal: %d \r \n", 10 * dataToSend[1],10 * dataToSend[2],dataToSend[3]);
         debug_pc.printf( "SENDED\r\n");
     }
 }
@@ -120,7 +116,7 @@
 }
  
 int main() {
-    float maxValue_ventre;            // Max FFT value is stored here (la largeur du caré envoyé par la led) 
+    float maxValue_ventre;            // Max FFT value is stored here (la largeur du care envoye par la led et detecte par la photodiode place sur le ventre) 
     float maxValue_epaule_droit;   
     float maxValue_epaule_gauche;  
     
@@ -131,6 +127,8 @@
     initNRF24();
     while(1) {
         if(trig == 0){
+            
+//calcul de la TF du signal detecte pour recuperer sa largeur 
             timer.detach();
             // Init the Complex FFT module, intFlag = 0, doBitReverse = 1
             //NB using predefined arm_cfft_sR_f32_lenXXX, in this case XXX is 256
@@ -152,43 +150,52 @@
             arm_max_f32(Output_epaule_droit, FFT_SIZE/2, &maxValue_epaule_droit, &maxIndex_epaule_droit);
             arm_max_f32(Output_epaule_gauche, FFT_SIZE/2, &maxValue_epaule_gauche, &maxIndex_epaule_gauche);
             
-            //Envoie du nombre de point au ordinateur par bluetooth 
-            dataToSend[1] = 100;
-            nRF24_mod.write( NRF24L01P_PIPE_P0, dataToSend, TRANSFER_SIZE );
+
             
-            // Calcul des points
-            //Tire sur un coéquipier :
-            if (maxValue_ventre<(largeur_signal_carre_equipe1+epsilon) && maxValue_ventre>(largeur_signal_carre_equipe1-epsilon) )
+// Calcul des points
+            //Tire sur un coequipier :
+            if (maxIndex_ventre<(index_equipe1+epsilon) && maxIndex_ventre>(index_equipe1-epsilon) )
             {
-                nbr_pts_equipe1=nbr_pts_equipe1-20; // -20pts pour l'équipe du tireur
+                nbr_pts_equipe1=nbr_pts_equipe1-2; // -2pts pour l'equipe du tireur
             }
-            if (maxValue_epaule_droit<(largeur_signal_carre_equipe1+epsilon) && maxValue_epaule_droit>(largeur_signal_carre_equipe1-epsilon) )
+            if (maxIndex_epaule_droit<(index_equipe1+epsilon) && maxIndex_epaule_droit>(index_equipe1-epsilon) )
             {
-                nbr_pts_equipe1=nbr_pts_equipe1-20; // -20pts pour l'équipe du tireur
+                nbr_pts_equipe1=nbr_pts_equipe1-2; // -2pts pour l'equipe du tireur
             }
-            if (maxValue_epaule_gauche<(largeur_signal_carre_equipe1+epsilon) && maxValue_epaule_gauche>(largeur_signal_carre_equipe1-epsilon) )
+            if (maxIndex_epaule_gauche<(index_equipe1+epsilon) && maxIndex_epaule_gauche>(index_equipe1-epsilon) )
             {
-                nbr_pts_equipe1=nbr_pts_equipe1-20; // -20pts pour l'équipe du tireur
+                nbr_pts_equipe1=nbr_pts_equipe1-2; // -2pts pour l'equipe du tireur
             }
             
             //Tire sur le ventre   
-            if (maxValue_ventre<(largeur_signal_carre_equipe2+epsilon) && maxValue_ventre>(largeur_signal_carre_equipe2-epsilon)) 
+            if (maxIndex_ventre<(index_equipe2+epsilon) && maxIndex_ventre>(index_equipe2-epsilon)) 
             {
-                nbr_pts_equipe1=nbr_pts_equipe1-10; //Tire sur le ventre : -10pts pour l'équipe de la victime
-                nbr_pts_equipe2=nbr_pts_equipe2+50; //Tire sur le ventre : +50pts pour l'équipe du tireur
+                nbr_pts_equipe1=nbr_pts_equipe1-1; //Tire sur le ventre : -1pts pour l'equipe de la victime
+                nbr_pts_equipe2=nbr_pts_equipe2+5; //Tire sur le ventre : +5pts pour l'equipe du tireur
             }   
             
-            //Tire sur l'épaule
-            if ((maxValue_epaule_droit<(largeur_signal_carre_equipe2+epsilon))&& (maxValue_epaule_droit>(largeur_signal_carre_equipe2-epsilon)) || ((maxValue_epaule_gauche<(largeur_signal_carre_equipe2+epsilon))&& (maxValue_epaule_gauche>(largeur_signal_carre_equipe2-epsilon))))
+            //Tire sur l'epaule
+            if ((maxIndex_epaule_droit<(index_equipe2+epsilon))&& (maxIndex_epaule_droit>(index_equipe2-epsilon)) || ((maxIndex_epaule_gauche<(index_equipe2+epsilon))&& (maxIndex_epaule_gauche>(index_equipe2-epsilon))))
             {
-                nbr_pts_equipe1=nbr_pts_equipe1-10; //Tire sur l'épaule : -10pts pour l'équipe de la victime
-                nbr_pts_equipe2=nbr_pts_equipe2+100; //Tire sur l'épaule : +100pts pour l'équipe du tireur
+                nbr_pts_equipe1=nbr_pts_equipe1-1; //Tire sur l'epaule : -1pts pour l'equipe de la victime
+                nbr_pts_equipe2=nbr_pts_equipe2+10; //Tire sur l'epaule : +10pts pour l'equipe du tireur
             }
             
-            // Relance de l'acquisition
+// Envoie du nombre de point au ordinateur par bluetooth 
+            if (bouton==1){
+            dataToSend[1] = nbr_pts_equipe1;
+            dataToSend[2] = nbr_pts_equipe2;
+            dataToSend[3] = maxValue_ventre;
+            testNRF24();
+            wait(0.5);}            
+         
+
+// Relance de l'acquisition
             trig = 1;
             indice = 0;
-            timer.attach_us(&sample,40);      //20us 50KHz sampling rate
+            //(version prof) timer.attach_us(&sample,40);      //20us 50KHz sampling rate
+            timer.attach_us(&sample,50); //critere de shannon
         }
-    }
-}
\ No newline at end of file
+    
+
+}}
\ No newline at end of file