prog robocup equip2
Dependencies: nRF24L01P MX12 BSP_B-L475E-IOT01
main.cpp
00001 /* 00002 TRANSFER_SIZE = 24 00003 id_robot, vx, vy, angle_robot, vangulaire, v_tir, cmd_rouleau 00004 */ 00005 00006 #include "mbed.h" 00007 #include "MX12.h" 00008 #include <iostream> 00009 #include "stm32l475e_iot01_magneto.h" 00010 #include "Projet.h" 00011 #include "nRF24L01P.h" 00012 #include "string.h" 00013 00014 static UnbufferedSerial pc(USBTX, USBRX,115200); // tx, rx 00015 00016 nRF24L01P my_nrf24l01p(D11, D12, D13, D9, D10, D8); // mosi, miso, sck, csn, ce, irq 00017 00018 DigitalOut myled2(LED2); 00019 00020 DigitalOut led(LED1); 00021 MX12 mx (PC_4, PC_5,115200); 00022 00023 int main() 00024 { 00025 00026 // Nombre de caractères transmis à chaque envoi 00027 #define TRANSFER_SIZE 24 00028 char texte[100]; 00029 char txData[TRANSFER_SIZE]= {}; 00030 char rxData[TRANSFER_SIZE+1]= {}; 00031 char caractere_recu=0; 00032 int txDataCnt = 0; 00033 int rxDataCnt = 0; 00034 int statut_nrF; 00035 int id_robot, vx, vy, angle_robot, vangulaire, v_tir, cmd_rouleau; 00036 int consigneData[6]; 00037 00038 pc.baud(115200); // Débit de la liaison série PC 00039 00040 my_nrf24l01p.powerUp(); 00041 00042 my_nrf24l01p.setRfFrequency(2414); 00043 my_nrf24l01p.setRxAddress(0xA1A1A1A1A1); 00044 my_nrf24l01p.setTxAddress(0xB1A1A1A1A1); 00045 my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_1_MBPS); 00046 00047 my_nrf24l01p.setTransferSize( TRANSFER_SIZE ); 00048 my_nrf24l01p.setRfOutputPower(-6); 00049 00050 00051 sprintf(texte,"DISCO\r\n"); 00052 pc.write(texte,strlen(texte)); 00053 00054 sprintf(texte,"nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency()); 00055 pc.write(texte,strlen(texte)); 00056 00057 sprintf(texte,"nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() ); 00058 pc.write(texte,strlen(texte)); 00059 00060 sprintf(texte,"nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() ); 00061 pc.write(texte,strlen(texte)); 00062 00063 sprintf(texte,"nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() ); 00064 pc.write(texte,strlen(texte)); 00065 00066 sprintf(texte,"nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() ); 00067 pc.write(texte,strlen(texte)); 00068 00069 00070 my_nrf24l01p.setTransferSize( TRANSFER_SIZE ); 00071 my_nrf24l01p.setReceiveMode(); 00072 my_nrf24l01p.enable(); 00073 00074 00075 sprintf(texte,"Pret a recevoir, led2 ON\n\r" ); 00076 pc.write(texte,strlen(texte)); 00077 00078 myled2=!myled2; 00079 00080 while(1) { 00081 00082 // RECEPTION DE DONNEES ------------------------------------------------------------------ 00083 00084 for(int k=0;k<10000000;k++); 00085 statut_nrF=my_nrf24l01p.readable(NRF24L01P_PIPE_P0); 00086 00087 if ( statut_nrF != 0) { 00088 00089 myled2 = !myled2; 00090 00091 sprintf(texte,"Reception\n\r"); 00092 pc.write(texte,strlen(texte)); 00093 00094 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, TRANSFER_SIZE ); 00095 00096 //Traitement donnees-------------------------------- 00097 00098 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 00099 00100 00101 sprintf(texte,"Valeur de id_robot : %d \r\n",id_robot); 00102 pc.write(texte,strlen(texte)); 00103 00104 sprintf(texte,"Valeur de vx : %d \r\n",vx); 00105 pc.write(texte,strlen(texte)); 00106 00107 sprintf(texte,"Valeur de vy : %d \r\n",vy); 00108 pc.write(texte,strlen(texte)); 00109 00110 sprintf(texte,"Valeur de angle_robot : %d \r\n",angle_robot); 00111 pc.write(texte,strlen(texte)); 00112 00113 sprintf(texte,"Valeur de vangulaire : %d \r\n",vangulaire); 00114 pc.write(texte,strlen(texte)); 00115 00116 sprintf(texte,"Valeur de v_tir : %d \r\n",v_tir); 00117 pc.write(texte,strlen(texte)); 00118 00119 sprintf(texte,"Valeur de cmd_rouleau : %d \r\n",cmd_rouleau); 00120 pc.write(texte,strlen(texte)); 00121 00122 00123 } 00124 00125 else {sprintf(texte,rxData); 00126 pc.write(texte,strlen(texte));} 00127 00128 00129 consigneData[0] = id_robot; 00130 consigneData[1] = vx; 00131 consigneData[2] = vy; 00132 consigneData[3] = angle_robot; 00133 consigneData[4] = vangulaire; 00134 consigneData[5] = v_tir; 00135 consigneData[6] = cmd_rouleau; 00136 00137 00138 sprintf(texte,rxData); 00139 pc.write(texte,strlen(texte)); 00140 00141 sprintf(texte," Taille %d\r\n",rxDataCnt); 00142 pc.write(texte,strlen(texte)); 00143 00144 00145 led = 1; 00146 cmd_inverse(vx,vy,vangulaire,angle_robot,&mx); 00147 00148 } 00149 } 00150 }
Generated on Sat Jul 16 2022 02:20:21 by
1.7.2