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

Files at this revision

API Documentation at this revision

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
--- 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