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.
Dependencies: mbed nRF24L01P mbed-dsp
Revision 4:5c5298ceb3a3, committed 2022-04-11
- 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 |
--- 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