PSL_2021 / Mbed OS prog_robot_1_Eve_v4

Dependencies:   mbed-os nRF24L01P

Committer:
ajuton
Date:
Fri Apr 23 16:10:12 2021 +0000
Revision:
4:4fae82a1be60
Parent:
3:793d3386768b
Child:
5:42dad60edb69
programme robot profs

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