Code final recep

Dependencies:   mbed SimpleBLE X_NUCLEO_IDB0XA1 LIS3DH_spi

Files at this revision

API Documentation at this revision

Comitter:
Nthnthj
Date:
Wed Jan 22 09:35:13 2020 +0000
Parent:
8:f9cd29526673
Commit message:
Code final recep

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r f9cd29526673 -r 504c19ac8bba main.cpp
--- a/main.cpp	Tue Dec 17 14:25:24 2019 +0000
+++ b/main.cpp	Wed Jan 22 09:35:13 2020 +0000
@@ -1,8 +1,9 @@
-//Includes
+  //Includes
 
 #include "mbed.h"
 #include "SimpleBLE.h"
 #include "LIS3DH.h"
+#include "stdlib.h"
 
 //Accelerometer
 
@@ -11,9 +12,14 @@
 #define CS PC_5
 #define SCLK PC_10
 
+//Bluetooth hc05-6
+
+#define TX D0
+#define RX D1
+
 //Init simpleBLE
 
-SimpleBLE ble("ObCP_CROC_ENSMM");
+SimpleBLE ble("ObCP_Roller_Catcher2");
 
 
 // GPIO set
@@ -21,6 +27,18 @@
 //Interrupt input
 
 InterruptIn user1(PC_13);  //User1
+InterruptIn boutton1(D3);  //Bouton 1 shield
+InterruptIn boutton2(D4);  //Bouton 2 shield 
+InterruptIn event(A0);     //Passage dans la porte laser 
+
+//Création du Timer
+
+Timer timer;
+
+//Sorties numériques
+
+DigitalOut led1(D14);
+DigitalOut transistor(D6);
 
 //PWM output
 
@@ -29,18 +47,49 @@
 PwmOut Red(PC_6);                //PWM Green LED
 PwmOut Blue(PC_9);               //PWM Blue LED
 
+//Création des variables
+
+float flag = 0;
+bool flag2=false;
+int c;
+int temps1;
+int tref;
+char message ;
+float end,begin;
+int temps2 =0;
+
 //Init accelerometer
 
 LIS3DH      acc(MOSI, MISO, SCLK, CS, LIS3DH_DR_NR_LP_50HZ, LIS3DH_FS_2G);
 
-// Characteristics Accelerometer input
+//Création des liaisons série (pc et bluetooth hc-05)
+
+//Serial pc(USBTX, USBRX);
+Serial BT(USBTX,USBRX);
 
-SimpleChar<float> accX = ble.readOnly_float(0xA000, 0xA002);
-SimpleChar<float> accY = ble.readOnly_float(0xA000, 0xA003);
-SimpleChar<float> accZ = ble.readOnly_float(0xA000, 0xA004);
+// Characteristics pour affiche sur l'appli Android via BLE
+
+SimpleChar<float> compteur = ble.readOnly_float(0xA000, 0xA003);
+SimpleChar<float> Temps = ble.readOnly_float(0xA000, 0xA004);
+SimpleChar<float> Temps2 = ble.readOnly_float(0xA000, 0xA007);
 
 
-// When characteristic LED RGB changing
+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();
+    tref=timer.read_ms();
+}
+
+// Changement de mode de course ou changements couleur led
 
 void LEDupdate(uint32_t newColor)
 {
@@ -51,8 +100,45 @@
     Red   = static_cast<float>(channels[0]) / 255.0f;
     Green = static_cast<float>(channels[1]) / 255.0f;
     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';
+        envoi(message);
+        timer.reset();
+        flag2=true;
+    }else if(flag == 0) {
+        //  pc.printf("Mode solo actif   ");
+        message = 'S';
+        //  pc.printf("%c ",message);
+        envoi(message);
+        timer.reset();
+        flag2=false;
+    }
 }
 
+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);
+        
+    }else{
+        //  pc.printf("Temps parcours2 : %i     \n",temps2-tref);
+        //  pc.printf("Temps parcours1 : %i     \n", temps1-tref);
+        Temps = (temps1-tref)/1000.0f;
+        Temps2 = (temps2-tref)/1000.0f;
+    }
+}
+
+
+
 // When characteristic PWM output changing
 
 void PWMupdate(uint8_t pwmvalue)
@@ -66,9 +152,10 @@
 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;
+    //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;
 
 }
 
@@ -78,18 +165,107 @@
 // Characteristic PWM output
 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) {
+        //printf("Ligne de depart coupee solo \n");
+        if( flag == false) {
+            //printf("Depart skate \n");
+            begin = timer.read_ms();
+            compteur=100;
+            //pc.printf("                                         skater lance %.0f \n", begin);
+            flag = true;
+        } else if(flag == true) {
+            //printf("erreur \n");
+            //pc.printf("                                                                      Temps du skater : %.0f \n", end-begin);
+            flag = false;
+        }
+    }
+    else if(flag==true) {
+        //printf("Ligne d'arrivee coupee \n");
+        if( flag == false ) {
+            //printf("arrivee coupe sans depart\n");
+            flag = true;
+        } else if(flag == true ) {
+            //printf("Arrivee skate \n");
+            end = timer.read_ms();
+            //Temps = end-begin;
+            compteur=200;
+            //wait(1);
+            //pc.printf("                                                                      Temps du skater : %.0f \n", end-begin);
+            flag = false;
+        }
+    } 
+}
 
 //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); 
+}    
+
+
+  
+
 int main(int, char**)
 {
-
+    transistor=1;
     ble.start();
-    Ticker t;
-    t.attach(&Accupdate, 5.0f);
+    //Ticker t;
+    //t.attach(&Accupdate, 15.0f);
+    timer.start();
+    BT.attach(&RXevent);
+    user1.fall(&pressed2);
+    //boutton1.fall(&pressed);
+    //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
diff -r f9cd29526673 -r 504c19ac8bba mbed.bld
--- a/mbed.bld	Tue Dec 17 14:25:24 2019 +0000
+++ b/mbed.bld	Wed Jan 22 09:35:13 2020 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file