IOGS / LaserGame / Project
Dependencies: mbed nRF24L01P mbed-dsp
Diff: main.cpp
- Revision:
- 4:5c5298ceb3a3
- Parent:
- 3:627354c99ba0
--- 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