Luc Derrien / Mbed 2 deprecated L475_robot_1_v1

Dependencies:   mbed nRF24L01P

Committer:
lderr
Date:
Wed Apr 21 11:41:46 2021 +0000
Revision:
3:fdd8560c4739
Parent:
2:e309f19062b7
rtufj

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lderr 3:fdd8560c4739 1 /*
lderr 3:fdd8560c4739 2 RobotCup ENS Paris Saclay 2020-2021
lderr 3:fdd8560c4739 3 Team FC Furious
lderr 3:fdd8560c4739 4 Code by Luc DERRIEN
lderr 3:fdd8560c4739 5
lderr 3:fdd8560c4739 6 Programme communication PC-Robot
lderr 3:fdd8560c4739 7 Point de vue : robot
lderr 3:fdd8560c4739 8 micro controleur : L475
lderr 3:fdd8560c4739 9
lderr 3:fdd8560c4739 10 reception d'une chaine de caractère de taille TRANSFER_SIZE = 20
lderr 3:fdd8560c4739 11 forme : id_robot, v_tangent, v_normale, omega_robot, spiner_bool, v_tir
lderr 3:fdd8560c4739 12 - id_robot : 1 ou 2 (taille 1)
lderr 3:fdd8560c4739 13 - v_tangent : 0000 à 9999 (taille 4)
lderr 3:fdd8560c4739 14 - v_normale : 0000 à 9999 (taille 4)
lderr 3:fdd8560c4739 15 - omega_robot : 0000 à 9999 (taille 4)
lderr 3:fdd8560c4739 16 - spiner_bool : 0 ou 1 (taille 1)
lderr 3:fdd8560c4739 17 - v_tir = 1 à 9 (taille 1)
lderr 3:fdd8560c4739 18 */
lderr 3:fdd8560c4739 19
Owen 0:a51a6e7da590 20 #include "mbed.h"
Owen 0:a51a6e7da590 21 #include "nRF24L01P.h"
Owen 0:a51a6e7da590 22
Owen 0:a51a6e7da590 23 Serial pc(USBTX, USBRX); // tx, rx
Owen 0:a51a6e7da590 24
Fab2A 2:e309f19062b7 25 //Définition des E/S de la liaison SPI vers le module nRF24L01+
lderr 3:fdd8560c4739 26 nRF24L01P my_nrf24l01p(D11, D12, D13, D9, D2, D1); // mosi, miso, sck, csn, ce, irq
Owen 0:a51a6e7da590 27
Owen 0:a51a6e7da590 28 int main() {
Owen 0:a51a6e7da590 29
Fab2A 2:e309f19062b7 30 // Nombre de caractères transmis à chaque envoi
lderr 3:fdd8560c4739 31 #define TRANSFER_SIZE 20
Owen 0:a51a6e7da590 32
Owen 0:a51a6e7da590 33 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
Owen 0:a51a6e7da590 34 int txDataCnt = 0;
Owen 0:a51a6e7da590 35 int rxDataCnt = 0;
lderr 3:fdd8560c4739 36 int id_robot, v_tangent, v_normale, omega_robot, spiner_bool, v_tir ;
lderr 3:fdd8560c4739 37 int consigneData[6];
Fab2A 2:e309f19062b7 38
Fab2A 2:e309f19062b7 39 pc.baud(115200); // Débit de la liaison série PC
Owen 0:a51a6e7da590 40
lderr 3:fdd8560c4739 41
Owen 0:a51a6e7da590 42 my_nrf24l01p.powerUp();
Fab2A 2:e309f19062b7 43
Fab2A 2:e309f19062b7 44 my_nrf24l01p.setRfFrequency(2416); // Définition de la fréquence du canal d'E/R
Fab2A 2:e309f19062b7 45 my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_1_MBPS); // Définition du débit de la communication RF
Fab2A 2:e309f19062b7 46
Owen 0:a51a6e7da590 47
Fab2A 2:e309f19062b7 48 // Affichage de l'état de la configuration du nRF24L01+
lderr 3:fdd8560c4739 49 pc.printf( "_______________________\r\nCarte robot 1 :\r\n_______________________\r\n" );
Owen 0:a51a6e7da590 50 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
Owen 0:a51a6e7da590 51 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
Owen 0:a51a6e7da590 52 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
Owen 0:a51a6e7da590 53 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
Fab2A 2:e309f19062b7 54 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
Fab2A 2:e309f19062b7 55
Owen 0:a51a6e7da590 56
Owen 0:a51a6e7da590 57 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
Owen 0:a51a6e7da590 58
Owen 0:a51a6e7da590 59 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
Owen 0:a51a6e7da590 60 my_nrf24l01p.setReceiveMode();
Owen 0:a51a6e7da590 61 my_nrf24l01p.enable();
Fab2A 2:e309f19062b7 62
Owen 0:a51a6e7da590 63
Owen 0:a51a6e7da590 64 while (1) {
Owen 0:a51a6e7da590 65
Fab2A 2:e309f19062b7 66 // If we've received anything in the nRF24L01+2...
Owen 0:a51a6e7da590 67 if ( my_nrf24l01p.readable() ) {
lderr 3:fdd8560c4739 68
Owen 0:a51a6e7da590 69 // ...read the data into the receive buffer
Owen 0:a51a6e7da590 70 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
lderr 3:fdd8560c4739 71 if(sscanf(rxData, "%d,%d,%d,%d,%d,%d",&id_robot,&v_tangent,&v_normale,&omega_robot,&spiner_bool,&v_tir)==6){ // lecture et parsing de la chaîne
lderr 3:fdd8560c4739 72
lderr 3:fdd8560c4739 73 consigneData[0] = id_robot;
lderr 3:fdd8560c4739 74 if (v_tangent > 999) {
lderr 3:fdd8560c4739 75 v_tangent = - (v_tangent - 1000);
lderr 3:fdd8560c4739 76 }
lderr 3:fdd8560c4739 77 consigneData[1] = v_tangent;
lderr 3:fdd8560c4739 78
lderr 3:fdd8560c4739 79 if (v_normale > 999) {
lderr 3:fdd8560c4739 80 v_normale = - (v_normale - 1000);
lderr 3:fdd8560c4739 81 }
lderr 3:fdd8560c4739 82 consigneData[2] = v_normale;
lderr 3:fdd8560c4739 83
lderr 3:fdd8560c4739 84 if (omega_robot > 999) {
lderr 3:fdd8560c4739 85 omega_robot = - (omega_robot - 1000);
lderr 3:fdd8560c4739 86 }
lderr 3:fdd8560c4739 87 consigneData[3] = omega_robot;
lderr 3:fdd8560c4739 88
lderr 3:fdd8560c4739 89 consigneData[4] = spiner_bool;
lderr 3:fdd8560c4739 90 consigneData[5] = v_tir; }
lderr 3:fdd8560c4739 91
lderr 3:fdd8560c4739 92 rxDataCnt = 0;
Owen 0:a51a6e7da590 93
Owen 0:a51a6e7da590 94
Owen 0:a51a6e7da590 95 }
lderr 3:fdd8560c4739 96
Owen 0:a51a6e7da590 97 }
Owen 0:a51a6e7da590 98 }