PSL_2021 / Mbed OS new_emetteur

Dependencies:   mbed-os nRF24L01P

Committer:
evedelegue
Date:
Fri Dec 17 09:23:22 2021 +0000
Revision:
10:c24908236b2d
Parent:
7:cc8f8fd07dcd
Child:
11:dfaa218e7949
parfaitement fonctionnelle;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lderr 3:57925f75ede1 1 /*
evedelegue 10:c24908236b2d 2 RobotCup ENS Paris Saclay 2021-2022
evedelegue 10:c24908236b2d 3 Code by Eve Delegue
evedelegue 10:c24908236b2d 4 2021-12-17
lderr 3:57925f75ede1 5
lderr 3:57925f75ede1 6 Programme communication PC-Robot
lderr 3:57925f75ede1 7 Point de vue : pc
lderr 3:57925f75ede1 8 micro controleur : L432
lderr 3:57925f75ede1 9
lderr 3:57925f75ede1 10 envoi d'une chaine de caractère de taille TRANSFER_SIZE = 20
lderr 3:57925f75ede1 11 */
lderr 3:57925f75ede1 12
Owen 0:a51a6e7da590 13 #include "mbed.h"
Owen 0:a51a6e7da590 14 #include "nRF24L01P.h"
emerichartmann 5:e0a364225ab5 15 /* 115200 bit/s */
evedelegue 10:c24908236b2d 16 Serial pc(USBTX, USBRX,230400); // tx, rx
Owen 0:a51a6e7da590 17
Fab2A 2:e309f19062b7 18 //Définition des E/S de la liaison SPI vers le module nRF24L01+
Fab2A 2:e309f19062b7 19 nRF24L01P my_nrf24l01p(D11, D12, D13, A3, D9, A0); // mosi, miso, sck, csn, ce, irq
Owen 0:a51a6e7da590 20
Fab2A 2:e309f19062b7 21 DigitalOut myled1(D4);
Fab2A 2:e309f19062b7 22 DigitalOut myled2(D5);
Owen 0:a51a6e7da590 23
lderr 3:57925f75ede1 24 int main()
emerichartmann 5:e0a364225ab5 25 {
Owen 0:a51a6e7da590 26
Fab2A 2:e309f19062b7 27 // Nombre de caractères transmis à chaque envoi
evedelegue 10:c24908236b2d 28 #define TRANSFER_SIZE 20
Owen 0:a51a6e7da590 29
Owen 0:a51a6e7da590 30 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
lderr 3:57925f75ede1 31 char caractere_recu=0;
Owen 0:a51a6e7da590 32 int txDataCnt = 0;
Owen 0:a51a6e7da590 33 int rxDataCnt = 0;
lderr 3:57925f75ede1 34 int consigneData[6];
lderr 3:57925f75ede1 35
ajuton 4:47f95dbf49b5 36 pc.printf("Emetteur nRF connecte \n\r");
Owen 0:a51a6e7da590 37
Owen 0:a51a6e7da590 38 my_nrf24l01p.powerUp();
lderr 3:57925f75ede1 39
lderr 3:57925f75ede1 40 // paramétrage
emerichartmann 5:e0a364225ab5 41 my_nrf24l01p.setRfFrequency(2418); // Définition de la fréquence du canal d'E/R
evedelegue 10:c24908236b2d 42 my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_2_MBPS); // Définition du débit de la communication RF
lderr 3:57925f75ede1 43 my_nrf24l01p.setRfOutputPower(-6);
lderr 3:57925f75ede1 44
Owen 0:a51a6e7da590 45
lderr 3:57925f75ede1 46 // Affichage de l'état de la configuration du nRF24L01+
lderr 3:57925f75ede1 47 pc.printf( "_______________________\r\nCarte coach pc :\r\n_______________________\r\n" );
Owen 0:a51a6e7da590 48 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
Owen 0:a51a6e7da590 49 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
Owen 0:a51a6e7da590 50 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
Owen 0:a51a6e7da590 51 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
lderr 3:57925f75ede1 52 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
lderr 3:57925f75ede1 53
Owen 0:a51a6e7da590 54
Owen 0:a51a6e7da590 55 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
Owen 0:a51a6e7da590 56
Owen 0:a51a6e7da590 57 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
emerichartmann 7:cc8f8fd07dcd 58 my_nrf24l01p.setTransmitMode();
Owen 0:a51a6e7da590 59 my_nrf24l01p.enable();
Owen 0:a51a6e7da590 60
Owen 0:a51a6e7da590 61 while (1) {
Owen 0:a51a6e7da590 62
Owen 0:a51a6e7da590 63 // If we've received anything over the host serial link...
Owen 0:a51a6e7da590 64 if ( pc.readable() ) {
lderr 3:57925f75ede1 65 caractere_recu= pc.getc();
lderr 3:57925f75ede1 66 if (caractere_recu == 'D') {
lderr 3:57925f75ede1 67 txDataCnt = 0;
evedelegue 10:c24908236b2d 68 txData[txDataCnt++] = caractere_recu;
lderr 3:57925f75ede1 69 myled2 = !myled2;
lderr 3:57925f75ede1 70 } else {
lderr 3:57925f75ede1 71 // ...add it to the transmit buffer
lderr 3:57925f75ede1 72 txData[txDataCnt++] = caractere_recu;
lderr 3:57925f75ede1 73 }
Owen 0:a51a6e7da590 74 // If the transmit buffer is full
Owen 0:a51a6e7da590 75 if ( txDataCnt >= sizeof( txData ) ) {
Owen 0:a51a6e7da590 76
Owen 0:a51a6e7da590 77 // Send the transmitbuffer via the nRF24L01+
Owen 0:a51a6e7da590 78 my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
Owen 0:a51a6e7da590 79
Owen 0:a51a6e7da590 80 txDataCnt = 0;
lderr 3:57925f75ede1 81 myled1 = !myled1;
Owen 0:a51a6e7da590 82 }
Owen 0:a51a6e7da590 83 }
Owen 0:a51a6e7da590 84 }
Owen 0:a51a6e7da590 85 }