mbed-os github
Dependencies: ADS1015 Faulhaber HTU21D_mod MS5837_potless Sensor_Head_RevB_3 USBDevice_dfu Utilsdfu beep
Fork of ARNSRS_testDFU by
Diff: main.cpp
- Revision:
- 25:322ef9488e65
- Parent:
- 24:44ef919899c1
- Child:
- 26:a2fe19341f92
diff -r 44ef919899c1 -r 322ef9488e65 main.cpp --- 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