PSL_2021 / Mbed OS prog_robot_1_Eve_v4

Dependencies:   mbed-os nRF24L01P

Committer:
evedelegue
Date:
Thu Oct 13 10:39:25 2022 +0000
Revision:
14:1b41c5adf46e
Parent:
13:50de0cf096d1
je ne sais plus si je l'avais bien commit;

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
evedelegue 6:2be1def8ba74 4 Code by Luc DERRIEN adapted by Eve
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
evedelegue 9:67d737d8a349 10 envoi d'une chaine de caractère de taille TRANSFER_SIZE
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"
evedelegue 9:67d737d8a349 16 #include "float.h"
evedelegue 9:67d737d8a349 17 #include "MX12.h"
evedelegue 9:67d737d8a349 18 #include "stdio.h"
lderr 3:793d3386768b 19
emerichartmann 8:04ab02bb2262 20 BufferedSerial pc_serie(USBTX,USBRX,115200);
lderr 3:793d3386768b 21
lderr 3:793d3386768b 22 nRF24L01P my_nrf24l01p(D11, D12, D13, D9, D2, D1); // mosi, miso, sck, csn, ce, irq
evedelegue 9:67d737d8a349 23 DigitalOut maled2(LED2);
evedelegue 12:1378fba9c916 24 DigitalOut charge(D0);
evedelegue 12:1378fba9c916 25 DigitalOut tir(D3);
evedelegue 12:1378fba9c916 26 DigitalOut dd(D15);
evedelegue 12:1378fba9c916 27
evedelegue 12:1378fba9c916 28 Thread reception_thread;
evedelegue 12:1378fba9c916 29 Thread tir_thread;
evedelegue 12:1378fba9c916 30 Thread dribble_thread;
evedelegue 9:67d737d8a349 31
evedelegue 12:1378fba9c916 32 #define TRANSFER_SIZE 14
Owen 0:a51a6e7da590 33
evedelegue 12:1378fba9c916 34 char chaine[150];
evedelegue 10:0312e23ba3a1 35 char tampon;
evedelegue 10:0312e23ba3a1 36
evedelegue 10:0312e23ba3a1 37 char* reception8;
evedelegue 12:1378fba9c916 38
evedelegue 12:1378fba9c916 39 int16_t Vavance, Vlat,Wz,idcharge,idtir,dribble,idrobot;
evedelegue 12:1378fba9c916 40 int i;
evedelegue 10:0312e23ba3a1 41 int16_t reception16[TRANSFER_SIZE/2];
evedelegue 12:1378fba9c916 42
evedelegue 12:1378fba9c916 43 void reception()
evedelegue 12:1378fba9c916 44 {
evedelegue 14:1b41c5adf46e 45
Owen 0:a51a6e7da590 46 my_nrf24l01p.powerUp();
evedelegue 12:1378fba9c916 47 my_nrf24l01p.setRfFrequency(2424);
evedelegue 9:67d737d8a349 48 my_nrf24l01p.setAirDataRate(1000);
Owen 0:a51a6e7da590 49 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
Owen 0:a51a6e7da590 50 my_nrf24l01p.setReceiveMode();
emerichartmann 8:04ab02bb2262 51 my_nrf24l01p.setCrcWidth(0);
emerichartmann 8:04ab02bb2262 52 my_nrf24l01p.setRxAddress();
evedelegue 12:1378fba9c916 53 my_nrf24l01p.enable();
evedelegue 9:67d737d8a349 54
evedelegue 9:67d737d8a349 55 pc_serie.write("Je suis le robot de Eve", strlen("Je suis le robot de Eve"));
evedelegue 9:67d737d8a349 56
evedelegue 9:67d737d8a349 57 maled2 = 1;
evedelegue 10:0312e23ba3a1 58 MX12 servo_bus(PC_4, PC_5, 115200);
evedelegue 9:67d737d8a349 59
Owen 0:a51a6e7da590 60 while (1) {
Owen 0:a51a6e7da590 61
evedelegue 9:67d737d8a349 62 if (my_nrf24l01p.readable()) {
evedelegue 9:67d737d8a349 63 maled2 = !maled2;
evedelegue 10:0312e23ba3a1 64 my_nrf24l01p.read( NRF24L01P_PIPE_P0, reception8, TRANSFER_SIZE );
evedelegue 10:0312e23ba3a1 65 for (i=0 ; i<TRANSFER_SIZE;i+=2){
evedelegue 10:0312e23ba3a1 66 tampon = reception8[i+1];
evedelegue 10:0312e23ba3a1 67 reception8[i+1] = reception8 [i];
evedelegue 10:0312e23ba3a1 68 reception8[i]= tampon;
evedelegue 12:1378fba9c916 69 }
evedelegue 12:1378fba9c916 70 idrobot = reception16[6];
evedelegue 14:1b41c5adf46e 71 if (idrobot==0){
evedelegue 12:1378fba9c916 72
evedelegue 10:0312e23ba3a1 73 Vavance = reception16[0];
evedelegue 10:0312e23ba3a1 74 Vlat = reception16[1];
evedelegue 10:0312e23ba3a1 75 Wz = reception16[2];
evedelegue 12:1378fba9c916 76 idcharge = reception16[3];
evedelegue 12:1378fba9c916 77 idtir = reception16[4];
evedelegue 12:1378fba9c916 78 dribble = reception16[5];
evedelegue 14:1b41c5adf46e 79 dd=(dribble!=0);
evedelegue 12:1378fba9c916 80 //alors là c'est juste un test mais il y a quasi aucune chance que ça marche
evedelegue 12:1378fba9c916 81 sprintf(chaine," Vav = %d, Vlat = %d, Wz = %d, dribble= %d, idtir= %d, idcharge= %d, idrobot= %d \n\r",(int)Vavance, (int)Vlat, (int)Wz, (int)dribble, (int)idtir, (int)idcharge, (int)idrobot);
evedelegue 9:67d737d8a349 82 pc_serie.write(chaine, strlen(chaine));
evedelegue 12:1378fba9c916 83
evedelegue 12:1378fba9c916 84 servo_bus.cmd_moteur(Vavance/1000.0, Vlat/1000.0, Wz/1000.0);
evedelegue 12:1378fba9c916 85 //a bouger
evedelegue 12:1378fba9c916 86 //charge=(idcharge!=0);
evedelegue 12:1378fba9c916 87 charge=(idcharge==1);
evedelegue 12:1378fba9c916 88 ThisThread::sleep_for(10ms);
evedelegue 12:1378fba9c916 89 charge=0;
evedelegue 12:1378fba9c916 90 //dd.SetSpeed(dribble);
evedelegue 12:1378fba9c916 91 //tir=1;
evedelegue 12:1378fba9c916 92 }
Owen 0:a51a6e7da590 93 }
lderr 3:793d3386768b 94
Owen 0:a51a6e7da590 95 }
emerichartmann 5:42dad60edb69 96
evedelegue 9:67d737d8a349 97 }
evedelegue 12:1378fba9c916 98 void Dribble(){
evedelegue 14:1b41c5adf46e 99 }
evedelegue 14:1b41c5adf46e 100
evedelegue 12:1378fba9c916 101 void Tir(){
evedelegue 12:1378fba9c916 102 while(1){
evedelegue 14:1b41c5adf46e 103 if (idtir!=0){
evedelegue 12:1378fba9c916 104 tir = 1 ;
evedelegue 14:1b41c5adf46e 105 ThisThread::sleep_for(idtir);
evedelegue 12:1378fba9c916 106 tir = 0 ;
evedelegue 12:1378fba9c916 107 }
evedelegue 12:1378fba9c916 108 tir=0;}
evedelegue 12:1378fba9c916 109 }
evedelegue 12:1378fba9c916 110
evedelegue 12:1378fba9c916 111 int main(){
evedelegue 14:1b41c5adf46e 112 dd=0;
evedelegue 12:1378fba9c916 113 reception8 = (char*) reception16;
evedelegue 12:1378fba9c916 114 reception_thread.start(reception);
evedelegue 12:1378fba9c916 115 dribble_thread.start(Dribble);
evedelegue 14:1b41c5adf46e 116
evedelegue 12:1378fba9c916 117 tir_thread.start(Tir);
evedelegue 12:1378fba9c916 118 }