PSL_2021 / Mbed OS prog_robot_Eve_v1

Dependencies:   mbed-os nRF24L01P

Committer:
lderr
Date:
Fri Apr 23 12:36:02 2021 +0000
Revision:
3:793d3386768b
Parent:
2:e309f19062b7
Child:
4:4fae82a1be60
L475 robot;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lderr 3:793d3386768b 1 /*
lderr 3:793d3386768b 2 RobotCup ENS Paris Saclay 2020-2021
lderr 3:793d3386768b 3 Team FC Furious
lderr 3:793d3386768b 4 Code by Luc DERRIEN
lderr 3:793d3386768b 5
lderr 3:793d3386768b 6 Programme communication PC-Robot
lderr 3:793d3386768b 7 Point de vue : PC
lderr 3:793d3386768b 8 micro controleur : L475
lderr 3:793d3386768b 9
lderr 3:793d3386768b 10 envoi d'une chaine de caractère de taille TRANSFER_SIZE = 17
lderr 3:793d3386768b 11 */
lderr 3:793d3386768b 12
Owen 0:a51a6e7da590 13 #include "mbed.h"
lderr 3:793d3386768b 14 #include "string.h"
Owen 0:a51a6e7da590 15 #include "nRF24L01P.h"
lderr 3:793d3386768b 16 #include "MX12.h"
lderr 3:793d3386768b 17 #include "moteur.h"
Owen 0:a51a6e7da590 18
lderr 3:793d3386768b 19 char text[50];
lderr 3:793d3386768b 20
lderr 3:793d3386768b 21 // hacheur
lderr 3:793d3386768b 22 PwmOut hacheur(D15);
lderr 3:793d3386768b 23
lderr 3:793d3386768b 24 // commande moteur
lderr 3:793d3386768b 25
lderr 3:793d3386768b 26 UnbufferedSerial pc_serie(USBTX,USBRX,115200);
lderr 3:793d3386768b 27 MX12 servo(PC_4,PC_5,115200);
lderr 3:793d3386768b 28
lderr 3:793d3386768b 29 //Serial pc(USBTX, USBRX); // tx, rx
Owen 0:a51a6e7da590 30
Fab2A 2:e309f19062b7 31 //Définition des E/S de la liaison SPI vers le module nRF24L01+
lderr 3:793d3386768b 32 nRF24L01P my_nrf24l01p(D11, D12, D13, D9, D2, D1); // mosi, miso, sck, csn, ce, irq
Owen 0:a51a6e7da590 33
lderr 3:793d3386768b 34 int main()
lderr 3:793d3386768b 35 {
Owen 0:a51a6e7da590 36
Fab2A 2:e309f19062b7 37 // Nombre de caractères transmis à chaque envoi
lderr 3:793d3386768b 38 #define TRANSFER_SIZE 20
lderr 3:793d3386768b 39
lderr 3:793d3386768b 40 hacheur.period_ms(1.0f);
Owen 0:a51a6e7da590 41
Owen 0:a51a6e7da590 42 char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
Owen 0:a51a6e7da590 43 int txDataCnt = 0;
Owen 0:a51a6e7da590 44 int rxDataCnt = 0;
lderr 3:793d3386768b 45 int id_robot, v_tangent, v_normale, omega_robot, spiner_bool, v_tir ;
lderr 3:793d3386768b 46 float v_tr, v_nr, omega_rr;
lderr 3:793d3386768b 47
lderr 3:793d3386768b 48 // pc.baud(115200); // Débit de la liaison série PC
lderr 3:793d3386768b 49
Owen 0:a51a6e7da590 50
Owen 0:a51a6e7da590 51 my_nrf24l01p.powerUp();
lderr 3:793d3386768b 52
Fab2A 2:e309f19062b7 53 my_nrf24l01p.setRfFrequency(2416); // Définition de la fréquence du canal d'E/R
Fab2A 2:e309f19062b7 54 my_nrf24l01p.setAirDataRate(NRF24L01P_DATARATE_1_MBPS); // Définition du débit de la communication RF
Owen 0:a51a6e7da590 55
Owen 0:a51a6e7da590 56 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
Owen 0:a51a6e7da590 57 my_nrf24l01p.setReceiveMode();
Owen 0:a51a6e7da590 58 my_nrf24l01p.enable();
Owen 0:a51a6e7da590 59
lderr 3:793d3386768b 60 cmd_moteur(0,0,0);
lderr 3:793d3386768b 61 hacheur.write(0.0f);
Owen 0:a51a6e7da590 62 while (1) {
Owen 0:a51a6e7da590 63
Fab2A 2:e309f19062b7 64 // If we've received anything in the nRF24L01+2...
Owen 0:a51a6e7da590 65 if ( my_nrf24l01p.readable() ) {
Owen 0:a51a6e7da590 66
Owen 0:a51a6e7da590 67 // ...read the data into the receive buffer
Owen 0:a51a6e7da590 68 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
lderr 3:793d3386768b 69 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
Owen 0:a51a6e7da590 70
lderr 3:793d3386768b 71 if (v_tangent > 999) {
lderr 3:793d3386768b 72 v_tangent = - (v_tangent - 1000);
lderr 3:793d3386768b 73 }
lderr 3:793d3386768b 74
lderr 3:793d3386768b 75 if (v_normale > 999) {
lderr 3:793d3386768b 76 v_normale = - (v_normale - 1000);
lderr 3:793d3386768b 77 }
Owen 0:a51a6e7da590 78
lderr 3:793d3386768b 79 if (omega_robot > 999) {
lderr 3:793d3386768b 80 omega_robot = - (omega_robot - 1000);
lderr 3:793d3386768b 81 }
lderr 3:793d3386768b 82 pc_serie.write(text,strlen(text));
Owen 0:a51a6e7da590 83 }
lderr 3:793d3386768b 84 rxDataCnt = 0;
Owen 0:a51a6e7da590 85
lderr 3:793d3386768b 86 // commande moteur
lderr 3:793d3386768b 87 v_tr=v_tangent*0.8/999;
lderr 3:793d3386768b 88 v_nr=v_normale*0.8/999;
lderr 3:793d3386768b 89 omega_rr=omega_robot*2.9/999;
lderr 3:793d3386768b 90 cmd_moteur(v_tr,v_nr,omega_rr);
lderr 3:793d3386768b 91
lderr 3:793d3386768b 92 // hacheur dribbleur
lderr 3:793d3386768b 93 if ( spiner_bool )
lderr 3:793d3386768b 94 hacheur.write(0.3f);
lderr 3:793d3386768b 95 else
lderr 3:793d3386768b 96 hacheur.write(0.0f);
lderr 3:793d3386768b 97
Owen 0:a51a6e7da590 98 }
lderr 3:793d3386768b 99
Owen 0:a51a6e7da590 100 }
Owen 0:a51a6e7da590 101 }