prog robocup equip2

Dependencies:   nRF24L01P MX12 BSP_B-L475E-IOT01

Committer:
chedozeauclement
Date:
Fri Apr 23 09:08:02 2021 +0000
Revision:
1:2bc2848b78d1
Parent:
0:7b8f377e2077
Prog comm/mvt;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chedozeauclement 0:7b8f377e2077 1 /*
chedozeauclement 0:7b8f377e2077 2 TRANSFER_SIZE = 24
chedozeauclement 0:7b8f377e2077 3 id_robot, vx, vy, angle_robot, vangulaire, v_tir, cmd_rouleau
chedozeauclement 0:7b8f377e2077 4 */
chedozeauclement 0:7b8f377e2077 5
chedozeauclement 0:7b8f377e2077 6 #include "mbed.h"
chedozeauclement 0:7b8f377e2077 7 #include "MX12.h"
chedozeauclement 0:7b8f377e2077 8 #include <iostream>
chedozeauclement 0:7b8f377e2077 9 #include "stm32l475e_iot01_magneto.h"
chedozeauclement 0:7b8f377e2077 10 #include "Projet.h"
chedozeauclement 0:7b8f377e2077 11 #include "nRF24L01P.h"
chedozeauclement 1:2bc2848b78d1 12 #include "string.h"
chedozeauclement 0:7b8f377e2077 13
chedozeauclement 1:2bc2848b78d1 14 static UnbufferedSerial pc(USBTX, USBRX,115200); // tx, rx
chedozeauclement 0:7b8f377e2077 15
chedozeauclement 0:7b8f377e2077 16 nRF24L01P my_nrf24l01p(D11, D12, D13, D9, D10, D8); // mosi, miso, sck, csn, ce, irq
chedozeauclement 0:7b8f377e2077 17
chedozeauclement 0:7b8f377e2077 18 DigitalOut myled2(LED2);
chedozeauclement 0:7b8f377e2077 19
chedozeauclement 0:7b8f377e2077 20 DigitalOut led(LED1);
chedozeauclement 0:7b8f377e2077 21 MX12 mx (PC_4, PC_5,115200);
chedozeauclement 0:7b8f377e2077 22
chedozeauclement 0:7b8f377e2077 23 int main()
chedozeauclement 0:7b8f377e2077 24 {
chedozeauclement 0:7b8f377e2077 25
chedozeauclement 0:7b8f377e2077 26 // Nombre de caractères transmis à chaque envoi
chedozeauclement 0:7b8f377e2077 27 #define TRANSFER_SIZE 24
chedozeauclement 1:2bc2848b78d1 28 char texte[100];
chedozeauclement 0:7b8f377e2077 29 char txData[TRANSFER_SIZE]= {};
chedozeauclement 0:7b8f377e2077 30 char rxData[TRANSFER_SIZE+1]= {};
chedozeauclement 0:7b8f377e2077 31 char caractere_recu=0;
chedozeauclement 0:7b8f377e2077 32 int txDataCnt = 0;
chedozeauclement 0:7b8f377e2077 33 int rxDataCnt = 0;
chedozeauclement 0:7b8f377e2077 34 int statut_nrF;
chedozeauclement 0:7b8f377e2077 35 int id_robot, vx, vy, angle_robot, vangulaire, v_tir, cmd_rouleau;
chedozeauclement 0:7b8f377e2077 36 int consigneData[6];
chedozeauclement 0:7b8f377e2077 37
chedozeauclement 0:7b8f377e2077 38 pc.baud(115200); // Débit de la liaison série PC
chedozeauclement 0:7b8f377e2077 39
chedozeauclement 0:7b8f377e2077 40 my_nrf24l01p.powerUp();
chedozeauclement 0:7b8f377e2077 41
chedozeauclement 0:7b8f377e2077 42 my_nrf24l01p.setRfFrequency(2414);
chedozeauclement 0:7b8f377e2077 43 my_nrf24l01p.setRxAddress(0xA1A1A1A1A1);
chedozeauclement 0:7b8f377e2077 44 my_nrf24l01p.setTxAddress(0xB1A1A1A1A1);
chedozeauclement 0:7b8f377e2077 45 my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_1_MBPS);
chedozeauclement 0:7b8f377e2077 46
chedozeauclement 0:7b8f377e2077 47 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
chedozeauclement 0:7b8f377e2077 48 my_nrf24l01p.setRfOutputPower(-6);
chedozeauclement 0:7b8f377e2077 49
chedozeauclement 1:2bc2848b78d1 50
chedozeauclement 1:2bc2848b78d1 51 sprintf(texte,"DISCO\r\n");
chedozeauclement 1:2bc2848b78d1 52 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 53
chedozeauclement 1:2bc2848b78d1 54 sprintf(texte,"nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency());
chedozeauclement 1:2bc2848b78d1 55 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 56
chedozeauclement 1:2bc2848b78d1 57 sprintf(texte,"nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
chedozeauclement 1:2bc2848b78d1 58 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 59
chedozeauclement 1:2bc2848b78d1 60 sprintf(texte,"nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
chedozeauclement 1:2bc2848b78d1 61 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 62
chedozeauclement 1:2bc2848b78d1 63 sprintf(texte,"nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
chedozeauclement 1:2bc2848b78d1 64 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 65
chedozeauclement 1:2bc2848b78d1 66 sprintf(texte,"nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
chedozeauclement 1:2bc2848b78d1 67 pc.write(texte,strlen(texte));
chedozeauclement 0:7b8f377e2077 68
chedozeauclement 0:7b8f377e2077 69
chedozeauclement 0:7b8f377e2077 70 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
chedozeauclement 0:7b8f377e2077 71 my_nrf24l01p.setReceiveMode();
chedozeauclement 0:7b8f377e2077 72 my_nrf24l01p.enable();
chedozeauclement 1:2bc2848b78d1 73
chedozeauclement 1:2bc2848b78d1 74
chedozeauclement 1:2bc2848b78d1 75 sprintf(texte,"Pret a recevoir, led2 ON\n\r" );
chedozeauclement 1:2bc2848b78d1 76 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 77
chedozeauclement 0:7b8f377e2077 78 myled2=!myled2;
chedozeauclement 0:7b8f377e2077 79
chedozeauclement 0:7b8f377e2077 80 while(1) {
chedozeauclement 0:7b8f377e2077 81
chedozeauclement 0:7b8f377e2077 82 // RECEPTION DE DONNEES ------------------------------------------------------------------
chedozeauclement 0:7b8f377e2077 83
chedozeauclement 0:7b8f377e2077 84 for(int k=0;k<10000000;k++);
chedozeauclement 0:7b8f377e2077 85 statut_nrF=my_nrf24l01p.readable(NRF24L01P_PIPE_P0);
chedozeauclement 0:7b8f377e2077 86
chedozeauclement 0:7b8f377e2077 87 if ( statut_nrF != 0) {
chedozeauclement 0:7b8f377e2077 88
chedozeauclement 0:7b8f377e2077 89 myled2 = !myled2;
chedozeauclement 1:2bc2848b78d1 90
chedozeauclement 1:2bc2848b78d1 91 sprintf(texte,"Reception\n\r");
chedozeauclement 1:2bc2848b78d1 92 pc.write(texte,strlen(texte));
chedozeauclement 0:7b8f377e2077 93
chedozeauclement 0:7b8f377e2077 94 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, TRANSFER_SIZE );
chedozeauclement 0:7b8f377e2077 95
chedozeauclement 0:7b8f377e2077 96 //Traitement donnees--------------------------------
chedozeauclement 0:7b8f377e2077 97
chedozeauclement 0:7b8f377e2077 98 if(sscanf(rxData, "%d,%d,%d,%d,%d,%d,%d",&id_robot,&vx,&vy,&angle_robot,&vangulaire,&v_tir,&cmd_rouleau)==7){ // lecture et parsing de la chaîne
chedozeauclement 1:2bc2848b78d1 99
chedozeauclement 1:2bc2848b78d1 100
chedozeauclement 1:2bc2848b78d1 101 sprintf(texte,"Valeur de id_robot : %d \r\n",id_robot);
chedozeauclement 1:2bc2848b78d1 102 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 103
chedozeauclement 1:2bc2848b78d1 104 sprintf(texte,"Valeur de vx : %d \r\n",vx);
chedozeauclement 1:2bc2848b78d1 105 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 106
chedozeauclement 1:2bc2848b78d1 107 sprintf(texte,"Valeur de vy : %d \r\n",vy);
chedozeauclement 1:2bc2848b78d1 108 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 109
chedozeauclement 1:2bc2848b78d1 110 sprintf(texte,"Valeur de angle_robot : %d \r\n",angle_robot);
chedozeauclement 1:2bc2848b78d1 111 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 112
chedozeauclement 1:2bc2848b78d1 113 sprintf(texte,"Valeur de vangulaire : %d \r\n",vangulaire);
chedozeauclement 1:2bc2848b78d1 114 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 115
chedozeauclement 1:2bc2848b78d1 116 sprintf(texte,"Valeur de v_tir : %d \r\n",v_tir);
chedozeauclement 1:2bc2848b78d1 117 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 118
chedozeauclement 1:2bc2848b78d1 119 sprintf(texte,"Valeur de cmd_rouleau : %d \r\n",cmd_rouleau);
chedozeauclement 1:2bc2848b78d1 120 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 121
chedozeauclement 1:2bc2848b78d1 122
chedozeauclement 0:7b8f377e2077 123 }
chedozeauclement 0:7b8f377e2077 124
chedozeauclement 1:2bc2848b78d1 125 else {sprintf(texte,rxData);
chedozeauclement 1:2bc2848b78d1 126 pc.write(texte,strlen(texte));}
chedozeauclement 1:2bc2848b78d1 127
chedozeauclement 0:7b8f377e2077 128
chedozeauclement 0:7b8f377e2077 129 consigneData[0] = id_robot;
chedozeauclement 0:7b8f377e2077 130 consigneData[1] = vx;
chedozeauclement 0:7b8f377e2077 131 consigneData[2] = vy;
chedozeauclement 0:7b8f377e2077 132 consigneData[3] = angle_robot;
chedozeauclement 0:7b8f377e2077 133 consigneData[4] = vangulaire;
chedozeauclement 0:7b8f377e2077 134 consigneData[5] = v_tir;
chedozeauclement 0:7b8f377e2077 135 consigneData[6] = cmd_rouleau;
chedozeauclement 1:2bc2848b78d1 136
chedozeauclement 0:7b8f377e2077 137
chedozeauclement 1:2bc2848b78d1 138 sprintf(texte,rxData);
chedozeauclement 1:2bc2848b78d1 139 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 140
chedozeauclement 1:2bc2848b78d1 141 sprintf(texte," Taille %d\r\n",rxDataCnt);
chedozeauclement 1:2bc2848b78d1 142 pc.write(texte,strlen(texte));
chedozeauclement 1:2bc2848b78d1 143
chedozeauclement 0:7b8f377e2077 144
chedozeauclement 0:7b8f377e2077 145 led = 1;
chedozeauclement 0:7b8f377e2077 146 cmd_inverse(vx,vy,vangulaire,angle_robot,&mx);
chedozeauclement 0:7b8f377e2077 147
chedozeauclement 0:7b8f377e2077 148 }
chedozeauclement 0:7b8f377e2077 149 }
chedozeauclement 0:7b8f377e2077 150 }