mbed-os github

Dependencies:   ADS1015 Faulhaber HTU21D_mod MS5837_potless Sensor_Head_RevB_3 USBDevice_dfu Utilsdfu beep

Fork of ARNSRS_testDFU by POTLESS

Revision:
25:322ef9488e65
Parent:
24:44ef919899c1
Child:
26:a2fe19341f92
--- a/main.cpp	Thu Feb 08 15:31:07 2018 +0000
+++ b/main.cpp	Mon Feb 12 07:23:24 2018 +0000
@@ -32,14 +32,25 @@
 Reférence drv8839 : http://www.ti.com/lit/ds/symlink/drv8839.pdf
 
 Volet Fuite :
-PWM     ->      PB_5        ->      1
-FWD     ->      PB_4        ->      2
-REV     ->      PB_10       ->      7
+PWM     ->      PA_8        ->      Jump_4 & Jump_5
+FWD     ->      PB_4        ->      Jump_2
+REV     ->      PB_5        ->      Jump_1
+nSleep  ->      PC_5        ->      Jump_3
+Ch_A    ->      PB_9        ->      Codeur1 2
+Ch_B    ->      PB_8        ->      Codeur1 1
 
 Volet Poumon :
-PWM     ->      PB_13       ->      9
-FWD     ->      PB_14       ->      10
-REV     ->      PB_15       ->      15
+PWM     ->      PB_1        ->      Jump_4 & Jump_5
+FWD     ->      PB_14       ->      Jump_2
+REV     ->      PB_13       ->      Jump_1
+nSleep  ->      PC_6        ->      Jump_3
+Ch_A    ->      PB_2        ->      Codeur2 2    
+Ch_B    ->      PB_1        ->      Codeur2 1
+
+Test POWER :
+
+V_usb    ->      PC_4        ->      MCU 1
+V_pile   ->      PA_10       ->      MCU 2
 
 */
 
@@ -88,8 +99,8 @@
 #define ANDROID(...)
 #endif
 
-//PinName pwm, PinName nSleep, PinName fwd, PinName rev, int brakeable, PinName channelA, PinName channelB, int pulsesPerRev, int Rapport, Encoding encoding = X2_ENCODING
-Faulhaber Servo_Poumon("Servo_Poumon", PWM_SERVO_POUMON, nSleep_SERVO_POUMON, FWD_SERVO_POUMON, REV_SERVO_POUMON, 1, Channel_A_SERVO_POUMON, Channel_B_SERVO_POUMON, 16, 207, Faulhaber::X2_ENCODING);
+//PinName pwm, PinName nSleep, PinName fwd, PinName rev, PinName channelA, PinName channelB, int pulsesPerRev, int Rapport, Encoding encoding = X2_ENCODING
+Faulhaber Servo_Poumon("Servo_Poumon", PWM_SERVO_POUMON, nSleep_SERVO_POUMON, FWD_SERVO_POUMON, REV_SERVO_POUMON, Channel_A_SERVO_POUMON, Channel_B_SERVO_POUMON, 16, 207, Faulhaber::X2_ENCODING);
 //Faulhaber Servo_Fuite("Servo_Fuite", PWM_SERVO_FUITE, nSleep_SERVO_FUITE, FWD_SERVO_FUITE, REV_SERVO_FUITE, 1, Channel_A_SERVO_FUITE, Channel_B_SERVO_FUITE, 16, 207, Faulhaber::X2_ENCODING);
 
 //Moniteur série, Serial 2
@@ -114,6 +125,9 @@
 bool newAndroidFlag = false;
 char to_android[100];
 
+//Flag pour interrompre l'affichage si on veut...
+bool FLAG_AFF = true;
+
 //Variables de stockage des infos capteurs
 int co2 = 0;
 float pression = 0;
@@ -140,6 +154,7 @@
 //Data LOG
 char to_store[50];
 time_t seconds;
+char Log_File_Name[] = "                           ";
 
 //Thread d'intérogation des capteurs et de positionnement des volets
 Thread thread_Sensors;
@@ -151,6 +166,8 @@
 float volet_poumon_Position = 0;
 float Consigne_fuite = 0;
 float volet_fuite_Position = 0;
+float Volets_Speed = 0.1;
+float Volet_DeadBand = 1;
 
 #ifdef PID_MODE
 //Paramètre du PID
@@ -193,14 +210,30 @@
 #endif
     Consigne_poumon = HOME_SERVO_POUMON;
     Consigne_fuite = HOME_SERVO_FUITE;
+    
+    Volets_Speed = 0.1;
+    Volet_DeadBand = 10;
+
     while(1) {
-        wait_ms(300);
+        wait_ms(100);
         if (Servo_Poumon.Pos_OK() == true) break;
         //if (Servo_Poumon.Pos_OK() == true && Servo_Fuite.Pos_OK() == true) break;
     }
     printf("-------------- Appareil en mode SECU ---------------\r\n");
+    
+    wait_ms(100);
+    Consigne_poumon = 90;
+    
+    while(1) {
+        wait_ms(100);
+        if (Servo_Poumon.Pos_OK() == true) break;
+        //if (Servo_Poumon.Pos_OK() == true && Servo_Fuite.Pos_OK() == true) break;
+    }
+    printf("-------------- Appareil en mode SECU ---------------\r\n");
+    
+    
     EN_MODE_SECU = true;
-
+    wait_ms(100);
     int Pos = Servo_Poumon.getPulses();
     UTILS::Store_A_Val((float)Pos, "Servo_Poumon");
     printf("  position volet poumon sauvegardée = %d pulse(s)\r\n", Pos);
@@ -227,7 +260,7 @@
 float Power_Test(AnalogIn& pin)
 {
     float Val = pin.read();
-    if(Val < 0.6) Stop_Sequence();
+    if(Val < 0.2) Stop_Sequence();
     return Val;
 }
 
@@ -289,7 +322,7 @@
     while (true) {
         //Servo_Poumon.Go_To_Prop(Consigne_poumon);
         //Servo_Poumon.Go_To_PID(Consigne_poumon);
-        Servo_Poumon.Go_To(Consigne_poumon);
+        Servo_Poumon.Go_To(Consigne_poumon, Volets_Speed, Volet_DeadBand );
         
         //Servo_Fuite.Go_To_Prop(Consigne_fuite);
         //Servo_Fuite.Go_To_PID(Consigne_fuite);
@@ -331,6 +364,7 @@
     printf("\r\n");
     printf("V_USB = %f", Vusb);
     printf("\r\n");
+    
 }
 
 //Callback de l'intérruption des envois de commandes depuis le terminal
@@ -415,6 +449,8 @@
     } else if ((char)commande == 'I') {
         Consigne_poumon = (float)valeur;
         printf("  Servo Poumon    = %f\r\n", Consigne_poumon);
+    }else if ((char)commande == 'D') {
+        UTILS::DIR_SD();
     } else if ((char)commande == 'O') {
         Consigne_fuite = (float)valeur;
         printf("  Servo Fuite     =  %f\r\n", Consigne_fuite);
@@ -455,14 +491,25 @@
     newAndroidFlag = false;
 }
 
+void Create_File_Name()
+{
+    //Du nom du fichier Date / heure
+    seconds = time(NULL);
+    char Time[40];
+    strftime(Time, 40, "%a_%d_%m_%Y_%H%M", localtime(&seconds));
+    sprintf(Log_File_Name, "%s_LOG.txt", Time);
+    printf("Nouveau fichier LOG = %s \r\n", Log_File_Name);
+    
+    }
+    
 int main()
 {
    button.fall(&pressed);
    int count = 0;
-   
+    
    while (1) { 
    
-   if (count == 0) serialMonit.printf("Appuyez sur le User Button pour commencer...\r\n");
+   if (count == 0) serialMonit.printf("\r\nAppuyez sur le User Button pour commencer...\r\n");
    
    count = 1;
    
@@ -499,8 +546,10 @@
 
     Servo_Poumon.Init();
     //Servo_Fuite.Init();
+    
+    Create_File_Name();
 
-    serialMonit.printf("  Demarrage...\r\n\r\n  Entrez les comandes COZIR si besoin :\r\n");
+    serialMonit.printf("  Demarrage des threads...\r\n\r\n");
 
     /*
 
@@ -545,9 +594,11 @@
     //Consigne à x mb
     control_Servo.setSetPoint(consigne);
 #endif
-
+    
+    serialMonit.printf("  Threads démmarés.....Entrez les comandes COZIR si besoin :\r\n");
+     
     while (true) {
-
+        
         //Démarrage du Timer mesurant le temps d'éxecution du code
         REAL_RATE.start();
 
@@ -565,7 +616,7 @@
         seconds = time(NULL);
         char Time_buf[32];
         strftime(Time_buf, 32, "%D %I-%M-%S ", localtime(&seconds));
-
+        
 #ifdef PID_MODE
         //Fabrication de la chaine à enregistrer
         sprintf(to_store,"%s:%d:%d:%.2f:%.2f:%.2f:%d:%d:%d:%.2f:%.2f:%d:%.3f:%.3f:%.3f:%d",
@@ -610,11 +661,12 @@
 #endif
 
         //Enregistrement de la chaine
-        UTILS::Write_SD_File((string)to_store);
+        UTILS::Write_SD_File(to_store, Log_File_Name);
+        printf("Fichier LOG = %s \r\n", Log_File_Name);
 
         //Pour Android on ajoute < et > pour décoder l'arrivée du message
         if (NEED_ANDROID_OUTPUT == 1) {
-            sprintf(to_android,"<%s>",to_store);
+            //sprintf(to_android,"<%s>",to_store);
             ANDROID(to_android);
         }
 
@@ -622,7 +674,7 @@
         Calcul_OTU();
 
         //Vers le moniteur série
-        Affichage_moniteur();
+        if (FLAG_AFF) Affichage_moniteur();
 
 
 #ifdef PID_MODE