Code final de la cellule du RC de réception, celle-ci est connectée en Bluetooth à l'autre cellule et en BLE à l'application Android.
Dependencies: mbed SimpleBLE X_NUCLEO_IDB0XA1 LIS3DH_spi
Revision 10:9911eb25b6a7, committed 2020-01-26
- Comitter:
- MaxenceGalopin
- Date:
- Sun Jan 26 11:13:58 2020 +0000
- Parent:
- 9:504c19ac8bba
- Commit message:
- Ajout commentaires
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 504c19ac8bba -r 9911eb25b6a7 main.cpp --- a/main.cpp Wed Jan 22 09:35:13 2020 +0000 +++ b/main.cpp Sun Jan 26 11:13:58 2020 +0000 @@ -1,19 +1,25 @@ +/* +Programme pour l'ObCP connecté à la fois à l'autre ObCP et à l'application Android +C'est la cellule qui fait la porte d'arrivée en mode solo +La sortie de la photodiode est reliée à la broche A0 +Le laser est alimenté en 3V3 (suffisant) ou en 5V. +Les pattes RX et TX dumodule HC-05 sont reliées aux broches D0 et D1 (Attention à relier RX à TX et Tx à RX) +Le shield est fonctionnel (sauf BLE) mais il faut inverser TX et RX pour le HC-05/HC06 +Il comporte aussi 2 leds, 2 boutons, et un transistor pour controler le laser. +*/ +/* +Penser à mettre à jour les librairies +*/ + //Includes #include "mbed.h" #include "SimpleBLE.h" -#include "LIS3DH.h" #include "stdlib.h" -//Accelerometer - -#define MOSI PC_12 -#define MISO PC_11 -#define CS PC_5 -#define SCLK PC_10 //Bluetooth hc05-6 - +//USBTX et USBRX sont utilisés #define TX D0 #define RX D1 @@ -58,9 +64,6 @@ float end,begin; int temps2 =0; -//Init accelerometer - -LIS3DH acc(MOSI, MISO, SCLK, CS, LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_2G); //Création des liaisons série (pc et bluetooth hc-05) @@ -77,12 +80,10 @@ void envoi(char message) { BT.printf("%c\n", message); - // pc.printf("Message envoye \r\n"); } void resetUpdate(float rst) { - // pc.printf("reset"); message = 'R'; envoi(message); timer.reset(); @@ -102,7 +103,7 @@ Blue = static_cast<float>(channels[2]) / 255.0f; flag = static_cast<float>(channels[3]); - // pc.printf("%f\n",flag); + if(flag == 1) { // pc.printf("Mode duo actif"); message = 'D'; @@ -112,7 +113,6 @@ }else if(flag == 0) { // pc.printf("Mode solo actif "); message = 'S'; - // pc.printf("%c ",message); envoi(message); timer.reset(); flag2=false; @@ -122,54 +122,33 @@ void pressed2(){ led1 = !led1; temps2 = timer.read_ms(); - // pc.printf("Temps calcule, %i \r\n",temps2); if(flag2==false){ - Temps=(temps2-temps1)/1000.0f; - // pc.printf("Temps1 ; %i", temps1); - // pc.printf("Temps de course ; %i", temps2-temps1); + Temps=(temps2-(temps1+1040))/1000.0f; //LE 1040 correspond au terme de correction du temps que nous avons calculé }else{ - // pc.printf("Temps parcours2 : %i \n",temps2-tref); - // pc.printf("Temps parcours1 : %i \n", temps1-tref); - Temps = (temps1-tref)/1000.0f; + Temps = (temps1+1040-tref)/1000.0f; Temps2 = (temps2-tref)/1000.0f; } } - - -// When characteristic PWM output changing - -void PWMupdate(uint8_t pwmvalue) -{ - - // cast to float, as PwmOut expects a value between 0.0f and 1.0f - PWMoutput = static_cast<float>(pwmvalue) / 255.0f; +void arret_laser(){ + transistor = !transistor; } -// When characteristic input changing -void Accupdate() -{ - //accX = float(short((acc.read_reg(LIS3DH_OUT_X_H) << 8) | acc.read_reg(LIS3DH_OUT_X_L))) * 0.001F / 15; - //accY = float(short((acc.read_reg(LIS3DH_OUT_Y_H) << 8) | acc.read_reg(LIS3DH_OUT_Y_L))) * 0.001F / 15; - //accZ = float(short((acc.read_reg(LIS3DH_OUT_Z_H) << 8) | acc.read_reg(LIS3DH_OUT_Z_L))) * 0.001F / 15; - //Temps=15.68; - -} // Characteritic PWM LED RGB SimpleChar<uint32_t> color = ble.writeOnly_u32(0x6200, 0x6201, &LEDupdate); // Characteristic PWM output -SimpleChar<uint8_t> pwmout = ble.writeOnly_u8(0xA000, 0xA001, &PWMupdate); +//SimpleChar<uint8_t> pwmout = ble.writeOnly_u8(0xA000, 0xA001, &PWMupdate); SimpleChar<float> reset = ble.writeOnly_float(0xA000, 0xA005, &resetUpdate); SimpleChar<float> depart_course = ble.writeOnly_float(0xA000, 0xA006, &resetUpdate); - +/* void skater_d() { if(flag==false) { @@ -202,20 +181,15 @@ } } } +*/ -//Main program + void RXevent (){ - //timer.start(); - //c=BT.getc(); + if(BT.readable()){ BT.scanf("%i", &temps1); - //wait(1); } - // pc.printf(" Message recu :%i \n", temps1); // !!!!!!!!!!!!!!!Ca marche pas sans ça !!!!!!!!!!! - //temps2 = timer.read_ms(); - //Temps= temps2-temps1; - //pc.printf("Temps calcule, %i \r\n",Temps); } @@ -225,47 +199,15 @@ { transistor=1; ble.start(); - //Ticker t; - //t.attach(&Accupdate, 15.0f); timer.start(); BT.attach(&RXevent); user1.fall(&pressed2); - //boutton1.fall(&pressed); + boutton1.fall(&arret_laser); //boutton2.fall(&pressed); event.fall(&pressed2); - //char Buffer[10]; while (1) { ble.waitForEvent(); - /* - pc.printf("%f\n",flag); - if(flag == 1 && flag2==false){ - pc.printf("Mode duo actif"); - }else if(flag == 0 && flag2==false){ - pc.printf("Mode solo actif "); - message = 0; - pc.printf("%i ",message); - envoi(message); - timer.start(); - flag2=true; - } - */ - - //if(BT.readable()){ - //pc.printf("Je recois"); - //BT.attach(&RXevent); - // c=BT.getc(); - //pc.printf("%i ",c); - //BT.scanf("%s",&Buffer); - //pc.printf("%i\n",c); - - //compteur = c; - //} - //else { - // pc.printf("bof"); - //} } } - -//blablabla \ No newline at end of file