PSL_2021 / Mbed OS new_recepteur

Dependencies:   robot_lorenzo mbed-os nRF24L01P dribble

Committer:
lorenzodunau
Date:
Thu Jun 02 15:49:44 2022 +0000
Revision:
14:51e51f67c064
Parent:
13:2620b6bb3e46
lol;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Owen 0:a51a6e7da590 1 #include "mbed.h"
lderr 3:793d3386768b 2 #include "string.h"
Owen 0:a51a6e7da590 3 #include "nRF24L01P.h"
ajuton 4:4fae82a1be60 4 #include "string.h"
emerichartmann 9:ab2b0ec489df 5 #include "MX12.h"
lorenzodunau 13:2620b6bb3e46 6 #include "DRIBBLE.h"
lorenzodunau 13:2620b6bb3e46 7
lorenzodunau 13:2620b6bb3e46 8 DigitalOut charge (D0);
lorenzodunau 13:2620b6bb3e46 9 DigitalOut kick (D3);
lorenzodunau 13:2620b6bb3e46 10 DigitalOut myled(LED2);
lorenzodunau 13:2620b6bb3e46 11 Thread thread;
lorenzodunau 13:2620b6bb3e46 12 Thread thread2;
lorenzodunau 13:2620b6bb3e46 13 dribbleur d(D15);
lorenzodunau 13:2620b6bb3e46 14 BufferedSerial pc_serie(USBTX,USBRX,115200);
lorenzodunau 13:2620b6bb3e46 15 MX12 bus(PC_4,PC_5,115200);
lorenzodunau 13:2620b6bb3e46 16 nRF24L01P my_nrf24l01p(D11, D12, D13, D9, D2, D1); // mosi, miso, sck, csn, ce, irq
lorenzodunau 13:2620b6bb3e46 17 int8_t instructionDribble=0;
lorenzodunau 13:2620b6bb3e46 18 int instructionPowerOff;
lorenzodunau 13:2620b6bb3e46 19 int instructionTir = 0;
lorenzodunau 13:2620b6bb3e46 20
lorenzodunau 13:2620b6bb3e46 21 void dribbleOn()
lorenzodunau 13:2620b6bb3e46 22 {
lorenzodunau 13:2620b6bb3e46 23 int instructionDribble_old = 0;
lorenzodunau 13:2620b6bb3e46 24 int i;
lorenzodunau 13:2620b6bb3e46 25 while(1) {
lorenzodunau 13:2620b6bb3e46 26 if((instructionDribble == 1) && (instructionDribble_old ==0)) {
lorenzodunau 13:2620b6bb3e46 27 for (i=10; i<=40; i=i+1) {
lorenzodunau 13:2620b6bb3e46 28 d.SetSpeed(i);
lorenzodunau 13:2620b6bb3e46 29 thread_sleep_for(100);
lorenzodunau 13:2620b6bb3e46 30 }
lorenzodunau 13:2620b6bb3e46 31 }
lorenzodunau 13:2620b6bb3e46 32 if(instructionDribble == 0) {
lorenzodunau 13:2620b6bb3e46 33 d.SetSpeed(0);
lorenzodunau 13:2620b6bb3e46 34 }
lorenzodunau 13:2620b6bb3e46 35
lorenzodunau 13:2620b6bb3e46 36 instructionDribble_old = instructionDribble;
lorenzodunau 13:2620b6bb3e46 37 thread_sleep_for(10);
lorenzodunau 13:2620b6bb3e46 38 }
lorenzodunau 13:2620b6bb3e46 39 }
Owen 0:a51a6e7da590 40
lderr 3:793d3386768b 41
Owen 0:a51a6e7da590 42
lderr 3:793d3386768b 43 int main()
lderr 3:793d3386768b 44 {
lorenzodunau 13:2620b6bb3e46 45 myled = 1 ;
Owen 0:a51a6e7da590 46
lorenzodunau 13:2620b6bb3e46 47 #define TRANSFER_SIZE 12
lorenzodunau 13:2620b6bb3e46 48
lorenzodunau 13:2620b6bb3e46 49 int16_t Vavance_mm_s;
lorenzodunau 13:2620b6bb3e46 50 int16_t Vlat_mm_s;
lorenzodunau 13:2620b6bb3e46 51 int16_t Vrot_mrad_s;
Owen 0:a51a6e7da590 52
lorenzodunau 13:2620b6bb3e46 53 char tab[TRANSFER_SIZE];
lorenzodunau 13:2620b6bb3e46 54 int i;
lorenzodunau 13:2620b6bb3e46 55 char text[50];
lorenzodunau 13:2620b6bb3e46 56
Owen 0:a51a6e7da590 57 my_nrf24l01p.powerUp();
lorenzodunau 13:2620b6bb3e46 58 my_nrf24l01p.setRfFrequency(2422);
lorenzodunau 13:2620b6bb3e46 59 my_nrf24l01p.setAirDataRate(1000);
Owen 0:a51a6e7da590 60 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
Owen 0:a51a6e7da590 61 my_nrf24l01p.setReceiveMode();
emerichartmann 8:04ab02bb2262 62 my_nrf24l01p.setCrcWidth(0);
emerichartmann 8:04ab02bb2262 63 my_nrf24l01p.setRxAddress();
Owen 0:a51a6e7da590 64 my_nrf24l01p.enable();
Owen 0:a51a6e7da590 65 while (1) {
lorenzodunau 13:2620b6bb3e46 66 if (my_nrf24l01p.readable()) {
lorenzodunau 13:2620b6bb3e46 67 myled = !myled;
lorenzodunau 13:2620b6bb3e46 68 my_nrf24l01p.read( NRF24L01P_PIPE_P0, tab, TRANSFER_SIZE );
Owen 0:a51a6e7da590 69
lorenzodunau 13:2620b6bb3e46 70 //
lorenzodunau 13:2620b6bb3e46 71 //sprintf(text, "trame_recue :");
lorenzodunau 13:2620b6bb3e46 72 //pc_serie.write(text,strlen(text));
lorenzodunau 13:2620b6bb3e46 73 //for(i=0;i<TRANSFER_SIZE;i++)
lorenzodunau 13:2620b6bb3e46 74 //{
lorenzodunau 13:2620b6bb3e46 75 // sprintf(text, "%x ",tab[i]);
lorenzodunau 13:2620b6bb3e46 76 // pc_serie.write(text,strlen(text));
lorenzodunau 13:2620b6bb3e46 77 //}
lorenzodunau 13:2620b6bb3e46 78 thread.start(dribbleOn);
lorenzodunau 13:2620b6bb3e46 79 Vavance_mm_s = ((uint16_t)tab[0] << 8) + tab[1];
lorenzodunau 13:2620b6bb3e46 80 Vlat_mm_s = ((uint16_t)tab[2] << 8) + tab[3];
lorenzodunau 13:2620b6bb3e46 81 Vrot_mrad_s = ((uint16_t)tab[4] << 8) + tab[5];
lorenzodunau 13:2620b6bb3e46 82 instructionDribble = tab[6];
lorenzodunau 13:2620b6bb3e46 83 instructionPowerOff = tab[7];
lorenzodunau 13:2620b6bb3e46 84 instructionTir = tab[8];
lorenzodunau 13:2620b6bb3e46 85 if (instructionPowerOff == 12) {
lorenzodunau 13:2620b6bb3e46 86 bus.eteindre_moteurs();
lorenzodunau 13:2620b6bb3e46 87 } else {
lorenzodunau 13:2620b6bb3e46 88 bus.cmd_moteur(-Vavance_mm_s/1000.0,-Vlat_mm_s/1000.0,-Vrot_mrad_s/1000.0);
lorenzodunau 13:2620b6bb3e46 89 }
lorenzodunau 13:2620b6bb3e46 90 if (instructionTir == 1) {
lorenzodunau 13:2620b6bb3e46 91 charge = 1;
lorenzodunau 13:2620b6bb3e46 92 thread_sleep_for(40);
lorenzodunau 13:2620b6bb3e46 93 charge = 0;
lorenzodunau 13:2620b6bb3e46 94 } else if (instructionTir == 2){
lorenzodunau 13:2620b6bb3e46 95 kick = 1;
lorenzodunau 13:2620b6bb3e46 96 thread_sleep_for(10);
lorenzodunau 13:2620b6bb3e46 97 kick = 0;
lorenzodunau 13:2620b6bb3e46 98 }
lorenzodunau 13:2620b6bb3e46 99
Owen 0:a51a6e7da590 100
Owen 0:a51a6e7da590 101 }
lderr 3:793d3386768b 102
lorenzodunau 13:2620b6bb3e46 103 }
lorenzodunau 13:2620b6bb3e46 104
emerichartmann 9:ab2b0ec489df 105 }