PSL_2021 / Mbed OS prog_robot_1_Eve_v4

Dependencies:   mbed-os nRF24L01P

Committer:
evedelegue
Date:
Thu Jun 02 17:00:35 2022 +0000
Revision:
12:1378fba9c916
Parent:
10:0312e23ba3a1
Child:
13:50de0cf096d1
ca ne marche pas, mais pk?;

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