remy 4 лет назад
Родитель
Сommit
cfcb8596f2

+ 0 - 1
Doc/.~lock.Aide Soft ordinateur.ods#

@@ -1 +0,0 @@
-,remy,lemien,15.06.2022 16:46,file:///home/remy/.config/libreoffice/4;

BIN
Doc/Aide Soft ordinateur.ods


+ 1 - 1
Eda/Ordinateur/Ordinateur.kicad_prl

@@ -1,6 +1,6 @@
 {
 {
   "board": {
   "board": {
-    "active_layer": 0,
+    "active_layer": 36,
     "active_layer_preset": "All Copper Layers",
     "active_layer_preset": "All Copper Layers",
     "auto_track_width": true,
     "auto_track_width": true,
     "hidden_nets": [],
     "hidden_nets": [],

+ 11 - 3
Soft/ESP12F/Ordinateur/ESP12F.h

@@ -8,7 +8,11 @@
 
 
 #define SIZEMES 8
 #define SIZEMES 8
 
 
+#define ESP_OK 0
+#define ESP_NOK 1
+
 #define MASKMES 0XF0
 #define MASKMES 0XF0
+#define MASKERR 0x03
 
 
 #define STATUS    0x00
 #define STATUS    0x00
 #define READACTI  0x10
 #define READACTI  0x10
@@ -73,15 +77,19 @@ WidgetLED TechHau(V1);
 WidgetLED CuveHau(V2);
 WidgetLED CuveHau(V2);
 WidgetLED Reserve(V3);
 WidgetLED Reserve(V3);
 
 
+
+
 /* **************************************************************
 /* **************************************************************
  *  Fonction Perso
  *  Fonction Perso
  ***************************************************************/
  ***************************************************************/
-uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out); // envoie un message et recoie la reponce
-uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out); // reesai si probleme dans le message;
 void SyncRTC();
 void SyncRTC();
+void Status();
+uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out);
 float convTemp(uint8_t ent);
 float convTemp(uint8_t ent);
 float convPH(uint8_t ent);
 float convPH(uint8_t ent);
 int convSalinity(uint8_t ent);
 int convSalinity(uint8_t ent);
-void Status();
+uint8_t readStatus();
+uint8_t readAction();
+uint8_t readVentil();
 
 
 #endif
 #endif

+ 224 - 128
Soft/ESP12F/Ordinateur/Ordinateur.ino

@@ -1,12 +1,11 @@
 #include "ESP12F.h"
 #include "ESP12F.h"
 #include <WidgetRTC.h>
 #include <WidgetRTC.h>
 
 
+#define DEBUG
+
 WidgetTerminal terminal(V50);
 WidgetTerminal terminal(V50);
 
 
-/* **************************************************************
-	Fonction Perso
- ***************************************************************/
-uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out) {
+uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out) {
   int i;
   int i;
   
   
   out[0]=0;
   out[0]=0;
@@ -29,34 +28,49 @@ uint8_t uart_send(uint8_t *in, uint8_t nbTr, uint8_t *out) {
   while (Serial.available() < SIZEMES) {
   while (Serial.available() < SIZEMES) {
     time++;
     time++;
     if (time > 1000000) {
     if (time > 1000000) {
-      terminal.print("erreur 1 :");
-      terminal.println(in[0]);
+      #ifdef DEBUG
+      terminal.print("erreur trans delay");
       terminal.flush();
       terminal.flush();
-      return 1;
+      #endif
+      return ESP_NOK;
     }
     }
   }
   }
-
   Serial.readBytes(out, SIZEMES);
   Serial.readBytes(out, SIZEMES);
 
 
-  terminal.print("out[1]");
-  terminal.println(out[1]);
-  terminal.flush();
-
   if (out[0] & MASKMES != in[0] & MASKMES) {
   if (out[0] & MASKMES != in[0] & MASKMES) {
-    terminal.print("erreur 2");
+    #ifdef DEBUG
+    terminal.print("erreur trans diff");
     terminal.flush();
     terminal.flush();
-    return 2;
+    #endif
+    return ESP_NOK;
   }
   }
 
 
-  return 0;
+	if (out[0] & MASKERR != ESP_OK){
+    #ifdef DEBUG
+    terminal.print("erreur trans HAL_ERROR");
+    terminal.flush();
+    #endif
+		return ESP_NOK;
+	}
+	
+  return ESP_OK;
+}
+
+float convTemp(uint8_t ent) {
+  return (((float)ent) / 10.0) + 10.0;
 }
 }
 
 
+float convPH(uint8_t ent) {
+  //TODO
+  return 8.2;
+}
 
 
-uint8_t transmition(uint8_t *in, uint8_t nbTr, uint8_t *out) {
-  return uart_send(in, nbTr, out);
+int convSalinity(uint8_t ent) {
+  //TODO
+  return 1025;
 }
 }
 
 
-/*
+
 void SyncRTC() {
 void SyncRTC() {
   uint8_t nbTr = 8;
   uint8_t nbTr = 8;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
@@ -73,54 +87,58 @@ void SyncRTC() {
   in[6] = minute();
   in[6] = minute();
   in[7] = second();
   in[7] = second();
 
 
-  if (transmition(in, nbTr, out)) {
-    ;// todo TODO test si retour NOK
+  if (transmition(in, nbTr, out)!=ESP_OK) {
+    exit;// TODO test si retour NOK
   }
   }
-  ;// todo return 0;
-}*/
-
-float convTemp(uint8_t ent) {
-  return (((float)ent) / 10.0) + 10.0;
 }
 }
 
 
-float convPH(uint8_t ent) {
-  //TODO
-  return 8.2;
-}
-
-int convSalinity(uint8_t ent) {
-  //TODO
-  return 1025;
+uint8_t readAction(){
+	uint8_t nbTr = 1;
+	uint8_t in[nbTr];
+	uint8_t out[SIZEMES];
+  
+	in[0] = READACTI;
+  if (transmition(in, nbTr, out)!=ESP_OK){
+      #ifdef DEBUG
+      terminal.print("READACTI NOK");
+      terminal.flush();
+      #endif
+      
+      return ESP_NOK;
+    }
+     
+  Blynk.virtualWrite(V20, (out[1] &  ACTIREM) >> DECALREME);
+  Blynk.virtualWrite(V21, (out[1] &  ACTIECU) >> DECALECUM);
+  Blynk.virtualWrite(V22, (out[1] &  ACTICHA) >> DECALCHAU);
+  Blynk.virtualWrite(V23, (out[1] &  ACTIBGE) >> DECALBRAG);
+  Blynk.virtualWrite(V24, (out[1] &  ACTIBR1) >> DECALBRA1);
+  Blynk.virtualWrite(V25, (out[1] &  ACTIBR2) >> DECALBRA2);
+  Blynk.virtualWrite(V26, (out[1] &  ACTI0SO) >> DECALOSMO);
+  Blynk.virtualWrite(V27, (out[1] &  ACTINOU) >> DECALNOUR);
+  Blynk.virtualWrite(V28, (out[2] &  ACTILUM) >> DECALLUM);
+  Blynk.virtualWrite(V29, (out[2] &  ACTIOSM) >> DECALOSMM);
+
+  #ifdef DEBUG
+  terminal.print("READACTI OK");
+  terminal.flush();
+  #endif
+  return ESP_OK;
 }
 }
 
 
-void Status() {
-  
+uint8_t readStatus(){  
   uint8_t nbTr = 1;
   uint8_t nbTr = 1;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
 
 
   in[0] = STATUS;
   in[0] = STATUS;
-  if (transmition(in, nbTr, out))
-    exit; //todo erreur
-/*
-  terminal.println("Status");
-  terminal.print("out[0]");
-  terminal.println(out[0]);
-  terminal.print("out[1]");
-  terminal.println(out[1]);
-  terminal.print("out[2]");
-  terminal.println(out[2]);
-  terminal.print("out[3]");
-  terminal.println(out[3]);
-  terminal.print("out[4]");
-  terminal.println(out[4]);
-  terminal.print("out[5]");
-  terminal.println(out[5]);
-  terminal.print("out[6]");
-  terminal.println(out[6]);
-  terminal.print("out[7]");
-  terminal.println(out[7]);
-  terminal.flush();*/
+  if (transmition(in, nbTr, out)!=ESP_OK){
+    #ifdef DEBUG
+    terminal.print("READSTATUS NOK");
+    terminal.flush();
+    #endif
+    return ESP_NOK;
+  }
+    
   
   
   if (out[5] & 0x80 == 0x80)
   if (out[5] & 0x80 == 0x80)
     TechBas.on();
     TechBas.on();
@@ -142,153 +160,231 @@ void Status() {
   else
   else
     Reserve.off();
     Reserve.off();
 
 
-
   float air = convTemp(out[1]);
   float air = convTemp(out[1]);
   float eau = convTemp(out[2]);
   float eau = convTemp(out[2]);
 
 
-    Blynk.virtualWrite(V6, air);
-    if (air <= 18.0)
-  	Blynk.notify("Temp air < 18°C");
-    if (air >= 29.0)
-  	Blynk.notify("Temp air > 29°C");
+  Blynk.virtualWrite(V6, air);
+  //TODO a changer les notif
+  if (air <= 18.0)
+	Blynk.notify("Temp air < 18°C");
+  if (air >= 29.0)
+	Blynk.notify("Temp air > 29°C");
+
+  Blynk.virtualWrite(V7, eau);
+  //TODO a changer les notif
+  
+  if (eau <= 24.0)
+  Blynk.notify("Temp eau < 24°C");
+  if (eau >= 27.0)
+  Blynk.notify("Temp eau > 27°C");
 
 
-    Blynk.virtualWrite(V7, eau);
-    if (eau <= 24.0)
-  	Blynk.notify("Temp eau < 24°C");
-    if (eau >= 27.0)
-  	Blynk.notify("Temp eau > 27°C");
+  Blynk.virtualWrite(V8, convPH(out[3]));
+  //TODO notif PH
 
 
-    Blynk.virtualWrite(V8, convPH(out[3]));
-    //TODO notif PH
+  Blynk.virtualWrite(V9, convSalinity(out[4]));
+  //TODO notif sel
 
 
-    Blynk.virtualWrite(V9, convSalinity(out[4]));
-    //TODO notif sel
 
 
-    //TODO gestion erreur
+  //TODO faire les notif
 
 
-/*
-    in[0] = READACTI;
-    if (transmition(in, nbTr, out))
-      exit;//TODO erreur
-     
-     
-     //terminal.println("out[2]: " + out[2]);
-
-    Blynk.virtualWrite(V20, (out[1] &  ACTIREM) >> DECALREME);
-    Blynk.virtualWrite(V21, (out[1] &  ACTIECU) >> DECALECUM);
-    Blynk.virtualWrite(V22, (out[1] &  ACTICHA) >> DECALCHAU);
-    Blynk.virtualWrite(V23, (out[1] &  ACTIBGE) >> DECALBRAG);
-    Blynk.virtualWrite(V24, (out[1] &  ACTIBR2) >> DECALBRA2);
-    Blynk.virtualWrite(V25, (out[1] &  ACTIBR1) >> DECALBRA1);
-    Blynk.virtualWrite(V26, (out[1] &  ACTI0SO) >> DECALOSMO);
-    Blynk.virtualWrite(V27, (out[1] &  ACTINOU) >> DECALNOUR);
-    Blynk.virtualWrite(V28, (out[2] &  ACTILUM) >> DECALLUM);
-    Blynk.virtualWrite(V29, (out[2] &  ACTIOSM) >> DECALOSMM);
-
-    in[0] = READVENT;
-    if (transmition(in, nbTr, out))
-      exit;
-
-    Blynk.virtualWrite(V40, (out[1] &  0xF0) >> 4);
-    Blynk.virtualWrite(V41, (out[1] &  0x0F) >> 0);
-
-    ;//TODO return 0;
-    */
+  //TODO faire les erreurs
+
+  #ifdef DEBUG
+  terminal.print("READSTATUS OK");
+  terminal.flush();
+  #endif
+  return ESP_OK;
+}
+
+uint8_t readVentil(){
+	uint8_t nbTr = 1;
+	uint8_t in[nbTr];
+	uint8_t out[SIZEMES];
+
+
+	
+	in[0] = READVENT;
+	if (transmition(in, nbTr, out)!=ESP_OK){
+	  #ifdef DEBUG
+    terminal.print("READVENT NOK"); 
+    terminal.flush();
+    #endif
+	  return ESP_NOK;
+	}
+
+  Blynk.virtualWrite(V40, (out[1] &  0xF0) >> 4);
+  Blynk.virtualWrite(V41, (out[1] &  0x0F) >> 0);
+  
+  #ifdef DEBUG
+  terminal.print("READVENT OK"); 
+  terminal.flush();
+  #endif
+  return ESP_OK;
 }
 }
 
 
+void Status() {
+  
+  #ifdef DEBUG
+  terminal.print("New Status");
+  terminal.flush();
+  #endif
+  
+	readStatus();
+
+  readAction();
+
+	readVentil();
+
+  #ifdef DEBUG
+  terminal.print("fin Status");
+  terminal.flush();
+  #endif
+}
+
+
 /* **************************************************************
 /* **************************************************************
   Fonction Blynk
   Fonction Blynk
  ***************************************************************/
  ***************************************************************/
 
 
+//Remonter
 BLYNK_WRITE(V20){
 BLYNK_WRITE(V20){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALREME);
   in[1]=0x00 | (1 << DECALREME);
-  in[2] = param.asInt();
-  transmition(in,nbTr,out);
+  in[2]=0x00;
+  in[3] = param.asInt();
+  if (transmition(in,nbTr,out)==ESP_OK){
+	  ;//TODO pas d'erreur
+  }
 }
 }
 
 
-
+//Ecumeur
 BLYNK_WRITE(V21){
 BLYNK_WRITE(V21){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALECUM);
   in[1]=0x00 | (1 << DECALECUM);
-  in[2] = param.asInt();
+  in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+//Chauffage
 BLYNK_WRITE(V22){
 BLYNK_WRITE(V22){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALCHAU);
   in[1]=0x00 | (1 << DECALCHAU);
-  in[2] = param.asInt();
+  in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+
+//Brassage Général
 BLYNK_WRITE(V23){
 BLYNK_WRITE(V23){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALBRAG);
   in[1]=0x00 | (1 << DECALBRAG);
-  in[2] = param.asInt();
+    in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+//Brassage1
 BLYNK_WRITE(V24){
 BLYNK_WRITE(V24){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALBRA1);
   in[1]=0x00 | (1 << DECALBRA1);
-  in[2] = param.asInt();
+    in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+//Brassage 2
 BLYNK_WRITE(V25){
 BLYNK_WRITE(V25){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALBRA2);
   in[1]=0x00 | (1 << DECALBRA2);
-  in[2] = param.asInt();
+  in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+//Osmolateur ON/OFF
 BLYNK_WRITE(V26){
 BLYNK_WRITE(V26){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALOSMO);
   in[1]=0x00 | (1 << DECALOSMO);
-  in[2] = param.asInt();
+    in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+//Nourrisage
 BLYNK_WRITE(V27){
 BLYNK_WRITE(V27){
-  uint8_t nbTr = 3;
+  uint8_t nbTr = 4;
   uint8_t in[nbTr];
   uint8_t in[nbTr];
   uint8_t out[SIZEMES];
   uint8_t out[SIZEMES];
-  in[0]=0x20;
+  in[0]=WRITACTI;
   in[1]=0x00 | (1 << DECALNOUR);
   in[1]=0x00 | (1 << DECALNOUR);
-  in[2] = param.asInt();
+    in[2]=0x00;
+  in[3] = param.asInt();
   transmition(in,nbTr,out);
   transmition(in,nbTr,out);
 }
 }
 
 
+//Osmolateur Manuelle
+BLYNK_WRITE(V28){
+  uint8_t nbTr = 4;
+  uint8_t in[nbTr];
+  uint8_t out[SIZEMES];
+  in[0]=WRITACTI;
+  in[1]=0x00 ;
+  in[2]=0x00| (1 << DECALOSMM);
+  in[3] = param.asInt();
+  transmition(in,nbTr,out);
+}
+
+//Lumiere decante
+BLYNK_WRITE(V29){
+  uint8_t nbTr = 4;
+  uint8_t in[nbTr];
+  uint8_t out[SIZEMES];
+  in[0]=WRITACTI;
+  in[1]=0x00;
+    in[2]=0x00| (1 << DECALLUM);
+  in[3] = param.asInt();
+  transmition(in,nbTr,out);
+}
+
+//delais Brassage
+BLYNK_WRITE(V42){
+  uint8_t nbTr = 2;
+  uint8_t in[nbTr];
+  uint8_t out[SIZEMES];
+  in[0]=DELAYBRA;
+  in[1] = param.asInt();
+  transmition(in,nbTr,out);
+}
 
 
 
 
 /* **************************************************************
 /* **************************************************************
 	Fonction main
 	Fonction main
  ***************************************************************/
  ***************************************************************/
 
 
-uint8_t out[8];
-uint8_t in[8];
+
 
 
 void setup() {
 void setup() {
   Serial.begin(38400);
   Serial.begin(38400);

+ 1 - 1
Soft/STM32/Ordinateur/Core/Inc/Fille.h

@@ -67,7 +67,7 @@ void init_Fille();
 
 
 HAL_StatusTypeDef readActitoneur(uint8_t* val);
 HAL_StatusTypeDef readActitoneur(uint8_t* val);
 
 
-HAL_StatusTypeDef fc_Nourrisage();
+HAL_StatusTypeDef fc_Nourrisage(enum Etat val);
 HAL_StatusTypeDef fc_Osmolateur(enum Etat val);
 HAL_StatusTypeDef fc_Osmolateur(enum Etat val);
 HAL_StatusTypeDef fc_OsmolateurManu(enum Etat val);
 HAL_StatusTypeDef fc_OsmolateurManu(enum Etat val);
 HAL_StatusTypeDef fc_Brassage();
 HAL_StatusTypeDef fc_Brassage();

+ 3 - 1
Soft/STM32/Ordinateur/Core/Inc/Status.h

@@ -3,7 +3,7 @@
 
 
 #include "stdint.h"
 #include "stdint.h"
 
 
-#define ALPHA 0.385
+#define ALPHA 0.389
 
 
 #define NOTIFCHAUD 	0b00000001
 #define NOTIFCHAUD 	0b00000001
 #define NOTTECHAUT	0b00000010
 #define NOTTECHAUT	0b00000010
@@ -37,4 +37,6 @@ uint8_t ReadErreur();
  */
  */
 uint8_t convertADC_tmp(uint16_t val);
 uint8_t convertADC_tmp(uint16_t val);
 
 
+int moyen(int tmp,int* oldtmp);
+
 #endif
 #endif

+ 1 - 0
Soft/STM32/Ordinateur/Core/Inc/tim.h

@@ -52,6 +52,7 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
 
 
 /* USER CODE BEGIN Prototypes */
 /* USER CODE BEGIN Prototypes */
 void startTIMNourrisage();
 void startTIMNourrisage();
+void stopTIMNourrisage();
 
 
 void startTIMBrassage();
 void startTIMBrassage();
 void stopTIMBrassage();
 void stopTIMBrassage();

+ 10 - 9
Soft/STM32/Ordinateur/Core/Src/Comunication.c

@@ -30,7 +30,7 @@ uint8_t parse(uint8_t* mes) {
 		SyncRTC(mes);
 		SyncRTC(mes);
 		break;
 		break;
 	default:
 	default:
-		return -1; //TODO (Pas important) erreur de cas
+		return -1; //TODO Erreur de cas (voir si reset du micro)
 
 
 	}
 	}
 	return 0;
 	return 0;
@@ -50,14 +50,14 @@ void Status() {
 }
 }
 
 
 void ReadAction() {
 void ReadAction() {
-	uint8_t mesRet[3];
+	uint8_t mesRet[8];
 	HAL_StatusTypeDef res;
 	HAL_StatusTypeDef res;
 	uint8_t val[2];
 	uint8_t val[2];
 	res = readActitoneur(val);
 	res = readActitoneur(val);
 	mesRet[0] = READACTI | res;
 	mesRet[0] = READACTI | res;
 	mesRet[1] = val[0];
 	mesRet[1] = val[0];
 	mesRet[2] = val[1];
 	mesRet[2] = val[1];
-	HAL_UART_Transmit(&huart1, mesRet, 3, 500);
+	HAL_UART_Transmit(&huart1, mesRet, 8, 500);
 }
 }
 
 
 void WriteAction(uint8_t* mes) {
 void WriteAction(uint8_t* mes) {
@@ -65,7 +65,7 @@ void WriteAction(uint8_t* mes) {
 	HAL_StatusTypeDef res;
 	HAL_StatusTypeDef res;
 
 
 	if (mes[1] & MASKNOUR)
 	if (mes[1] & MASKNOUR)
-		res = fc_Nourrisage();
+		res = fc_Nourrisage(mes[3]);
 
 
 	if (mes[1] & MASKOSMO)
 	if (mes[1] & MASKOSMO)
 		Osmolateur.On = mes[3];
 		Osmolateur.On = mes[3];
@@ -108,7 +108,7 @@ void WriteAction(uint8_t* mes) {
 	mesRet[2] = val[1];
 	mesRet[2] = val[1];
 
 
 	mesRet[0] = WRITACTI | res;
 	mesRet[0] = WRITACTI | res;
-	HAL_UART_Transmit(&huart1, mesRet, 3, 500);
+	HAL_UART_Transmit(&huart1, mesRet, 8, 500);
 }
 }
 
 
 void ReadVent() {
 void ReadVent() {
@@ -117,7 +117,7 @@ void ReadVent() {
 	mes[0] = READVENT | res;
 	mes[0] = READVENT | res;
 	mes[1]= gl_powerVentil1;
 	mes[1]= gl_powerVentil1;
 	mes[2]= gl_powerVentil2;
 	mes[2]= gl_powerVentil2;
-	HAL_UART_Transmit(&huart1, mes, 3, 500);
+	HAL_UART_Transmit(&huart1, mes, 8, 500);
 }
 }
 
 
 void WriteVent(uint8_t* mes) {
 void WriteVent(uint8_t* mes) {
@@ -126,14 +126,15 @@ void WriteVent(uint8_t* mes) {
 	gl_powerVentil2 = mes[2];
 	gl_powerVentil2 = mes[2];
 	res = fc_Ventilation();
 	res = fc_Ventilation();
 	mes[0]=WRITVENT | res;
 	mes[0]=WRITVENT | res;
-	HAL_UART_Transmit(&huart1, mes, 1, 500);
+	HAL_UART_Transmit(&huart1, mes, 8, 500);
 }
 }
 
 
 void DelayBra(uint8_t* mes) {
 void DelayBra(uint8_t* mes) {
 	IntervalBrassage = mes[1];
 	IntervalBrassage = mes[1];
+	fc_Brassage();
 	uint8_t mesRet[1];
 	uint8_t mesRet[1];
 	mesRet[0] = DELAYBRA;
 	mesRet[0] = DELAYBRA;
-	HAL_UART_Transmit(&huart1, mesRet, NBFILLE + 1, 500);
+	HAL_UART_Transmit(&huart1, mesRet, 8, 500);
 }
 }
 
 
 void SyncRTC(uint8_t* mes) {
 void SyncRTC(uint8_t* mes) {
@@ -148,5 +149,5 @@ void SyncRTC(uint8_t* mes) {
 	date.second = mes[7];
 	date.second = mes[7];
 	HAL_StatusTypeDef res = writeDate(&date);
 	HAL_StatusTypeDef res = writeDate(&date);
 	mesRet[0] = SYNCRTC | res;
 	mesRet[0] = SYNCRTC | res;
-	HAL_UART_Transmit(&huart1, mesRet, 1, 500);
+	HAL_UART_Transmit(&huart1, mesRet, 8, 500);
 }
 }

+ 45 - 27
Soft/STM32/Ordinateur/Core/Src/Fille.c

@@ -83,16 +83,23 @@ void init_Fille() {
 
 
 HAL_StatusTypeDef readActitoneur(uint8_t* val) {
 HAL_StatusTypeDef readActitoneur(uint8_t* val) {
 	uint8_t ReadVal;
 	uint8_t ReadVal;
+	HAL_StatusTypeDef res;
 	// pour une optimisation du nombre de lecture I2C la lecture n'est pas faite en générique si rajout d'une carte fille pensé a refaire cette fonction
 	// pour une optimisation du nombre de lecture I2C la lecture n'est pas faite en générique si rajout d'une carte fille pensé a refaire cette fonction
-	HAL_StatusTypeDef res = Read_PCF8574(1, &ReadVal);
+	if((res = Read_PCF8574(0, &ReadVal))!=HAL_OK){
+		return res;
+	}
 	val[0] = 0 ;
 	val[0] = 0 ;
 	val[1] = 0 ;
 	val[1] = 0 ;
+	if(Nourrisage==Nour_Normal)
+		modifBit(&val[0],DECALNOUR,0);
+	else
+		modifBit(&val[0],DECALNOUR,1);
 	//Osmolateur
 	//Osmolateur
 	modifBit(&val[0],DECALOSMO,MarcheArret(((ReadVal >> Osmolateur.Emplacement) & MASKPAIRE),Osmolateur.Contact));
 	modifBit(&val[0],DECALOSMO,MarcheArret(((ReadVal >> Osmolateur.Emplacement) & MASKPAIRE),Osmolateur.Contact));
 	//Brassage1
 	//Brassage1
-	modifBit(&val[0],DECALBRA1,MarcheArret(((ReadVal >> Brassage1.Emplacement) & MASKPAIRE),Brassage1.Contact));
+	modifBit(&val[0],DECALBRA1,Brassage1.On);
 	//Brassage2
 	//Brassage2
-	modifBit(&val[0],DECALBRA2,MarcheArret(((ReadVal >> Brassage2.Emplacement) & MASKPAIRE),Brassage2.Contact));
+	modifBit(&val[0],DECALBRA2,Brassage2.On);
 	//Chauffage
 	//Chauffage
 	modifBit(&val[0],DECALCHAU,MarcheArret(((ReadVal >> Chauffage.Emplacement) & MASKPAIRE),Chauffage.Contact));
 	modifBit(&val[0],DECALCHAU,MarcheArret(((ReadVal >> Chauffage.Emplacement) & MASKPAIRE),Chauffage.Contact));
 	//Ecumeur
 	//Ecumeur
@@ -109,31 +116,49 @@ HAL_StatusTypeDef readActitoneur(uint8_t* val) {
 	//modifBit(&val[1],DECALOSMM,MarcheArret(((ReadVal >> Remonter.Emplacement) & MASKPAIRE),Remonter.Contact));
 	//modifBit(&val[1],DECALOSMM,MarcheArret(((ReadVal >> Remonter.Emplacement) & MASKPAIRE),Remonter.Contact));
 	//Lumiere
 	//Lumiere
 	modifBit(&val[1],DECALLUMI,MarcheArret(((ReadVal >> LumiereDec.Emplacement) & MASKPAIRE),LumiereDec.Contact));
 	modifBit(&val[1],DECALLUMI,MarcheArret(((ReadVal >> LumiereDec.Emplacement) & MASKPAIRE),LumiereDec.Contact));
-
 	return res;
 	return res;
 }
 }
 
 
-HAL_StatusTypeDef fc_Nourrisage() {
+HAL_StatusTypeDef fc_Nourrisage(enum Etat val) {
 	HAL_StatusTypeDef res;
 	HAL_StatusTypeDef res;
-	res = fc_Brassage(Arret);
+	if (val = Marche){
+	BrassageGeneral = Arret;
+	res = fc_Brassage();
 	if (res != HAL_OK) {
 	if (res != HAL_OK) {
 		return res;
 		return res;
 	}
 	}
 	fc_Remonter(Arret);
 	fc_Remonter(Arret);
 	if (res != HAL_OK) {
 	if (res != HAL_OK) {
-		if (fc_Brassage(Marche) != HAL_OK)
+		BrassageGeneral = Marche;
+		if (fc_Brassage() != HAL_OK)
 			//Todo (Gestion d'erreur) Gros probleme (Arret du brassage mauvaise arret de la remonter et pas de redemarage
 			//Todo (Gestion d'erreur) Gros probleme (Arret du brassage mauvaise arret de la remonter et pas de redemarage
 			return res;
 			return res;
 	}
 	}
 	fc_Ecumeur(Arret);
 	fc_Ecumeur(Arret);
 	if (res != HAL_OK) {
 	if (res != HAL_OK) {
-		if ((fc_Brassage(Marche) != HAL_OK) & (fc_Remonter(Marche) != HAL_OK))
+		BrassageGeneral = Marche;
+		if ((fc_Brassage() != HAL_OK) & (fc_Remonter(Marche) != HAL_OK))
 			//Todo (Gestion d'erreur) Gros probleme (Arret du brassage et de la remonter mauvaise arret de l'ecumeur et pas de redemarage
 			//Todo (Gestion d'erreur) Gros probleme (Arret du brassage et de la remonter mauvaise arret de l'ecumeur et pas de redemarage
 			return res;
 			return res;
 	}
 	}
 	Nourrisage = Nour_Nourrisage;
 	Nourrisage = Nour_Nourrisage;
-	startTIMNourrisage(10 * 60); //Lancement du Tim nourrisage
+	startTIMNourrisage(); //Lancement du Tim nourrisage
 	return res;
 	return res;
+	}
+	else{
+
+	BrassageGeneral = Marche;
+	res = fc_Brassage();
+	res += fc_Remonter(Marche);
+	res += fc_Ecumeur(Marche);
+	if (res != HAL_OK) {
+		//Todo (Gestion d'erreur) Gros probleme
+		;
+	}
+	Nourrisage = Nour_Normal;
+	stopTIMNourrisage(); //Lancement du Tim nourrisage
+	return res;
+	}
 }
 }
 
 
 HAL_StatusTypeDef fc_Osmolateur(enum Etat val) {
 HAL_StatusTypeDef fc_Osmolateur(enum Etat val) {
@@ -163,29 +188,22 @@ HAL_StatusTypeDef fc_Brassage() {
 		startTIMArretLong();
 		startTIMArretLong();
 		return res;
 		return res;
 	}
 	}
-	if (Brassage1.On == Arret && Brassage2.On != Arret){
-		res = Write_One_Bit_PCF8574(Brassage1.N_CarteFille, MarcheArret(Arret, Brassage1.Contact), Brassage1.Emplacement);
-		res += Write_One_Bit_PCF8574(Brassage2.N_CarteFille, MarcheArret(Marche, Brassage2.Contact), Brassage2.Emplacement);
-		return res;
-	}
-	else if (Brassage1.On == Arret && Brassage2.On != Arret){
-		res = Write_One_Bit_PCF8574(Brassage1.N_CarteFille, MarcheArret(Arret, Brassage1.Contact), Brassage1.Emplacement);
-		res += Write_One_Bit_PCF8574(Brassage2.N_CarteFille, MarcheArret(Marche, Brassage2.Contact), Brassage2.Emplacement);
-		return res;
-	}
-	else if (Brassage1.On == Arret && Brassage2.On != Arret){
-		res = Write_One_Bit_PCF8574(Brassage1.N_CarteFille, MarcheArret(Arret, Brassage1.Contact), Brassage1.Emplacement);
-		res += Write_One_Bit_PCF8574(Brassage2.N_CarteFille, MarcheArret(Arret, Brassage2.Contact), Brassage2.Emplacement);
-		return res;
+	else if(Brassage1.On != Arret && Brassage2.On != Arret && IntervalBrassage !=0){
+		return ChangePompe();
 	}
 	}
 	else{
 	else{
-		if(IntervalBrassage==0){
+		if (Brassage1.On == Arret){
+			res = Write_One_Bit_PCF8574(Brassage1.N_CarteFille, MarcheArret(Arret, Brassage1.Contact), Brassage1.Emplacement);
+		}
+		else{
 			res = Write_One_Bit_PCF8574(Brassage1.N_CarteFille, MarcheArret(Marche, Brassage1.Contact), Brassage1.Emplacement);
 			res = Write_One_Bit_PCF8574(Brassage1.N_CarteFille, MarcheArret(Marche, Brassage1.Contact), Brassage1.Emplacement);
-			res += Write_One_Bit_PCF8574(Brassage2.N_CarteFille, MarcheArret(Marche, Brassage2.Contact), Brassage2.Emplacement);
-			return res;
+		}
+
+		if (Brassage2.On == Arret){
+			res = Write_One_Bit_PCF8574(Brassage2.N_CarteFille, MarcheArret(Arret, Brassage2.Contact), Brassage2.Emplacement);
 		}
 		}
 		else{
 		else{
-			return ChangePompe();
+			res = Write_One_Bit_PCF8574(Brassage2.N_CarteFille, MarcheArret(Marche, Brassage2.Contact), Brassage2.Emplacement);
 		}
 		}
 	}
 	}
 }
 }

+ 14 - 4
Soft/STM32/Ordinateur/Core/Src/Status.c

@@ -41,12 +41,22 @@ uint8_t ReadErreur(){
 }
 }
 
 
 uint8_t convertADC_tmp(uint16_t val) {
 uint8_t convertADC_tmp(uint16_t val) {
-
-	float V1 = val * 0.000845288; // Le chiffre de 0.00845288 a était trouvé par l'expérimentation
-	float R = V1 / ((3.17 - V1) / 467.0); // tension mesuré / (tension de ref - tension mesure)/Résistance du pont avec PT100
-	float tmp = ((R - 100.0) / ALPHA) - 2.5; // conversion de la Resistance PT100 (R) en température
+	float V1 = val * 0.000871675; // Le chiffre a était trouvé par l'expérimentation
+	float R = V1 / ((3.3 - V1) / 467.0); // tension mesuré / (tension de ref - tension mesure)/Résistance du pont avec PT100
+	float tmp = ((R - 100) / ALPHA)-0.40; // conversion de la Resistance PT100 (R) en température -0.45 (Temperature d'echauffement)
 	uint8_t t = (tmp - 10.0) * 10.0; //codage de la temperature en uint8_t (temp -15°C)  * 10
 	uint8_t t = (tmp - 10.0) * 10.0; //codage de la temperature en uint8_t (temp -15°C)  * 10
 	return t;
 	return t;
 }
 }
 
 
+int moyen(int tmp,int* oldtmp){
+	int res = 0;
+	for (int i = 0; i< 9;i++){
+		oldtmp[i]=oldtmp[i+1];
+		res += oldtmp[i];
+	}
+	res+=tmp;
+	oldtmp[9]=tmp;
+	return res/10;
+}
+
 
 

+ 26 - 8
Soft/STM32/Ordinateur/Core/Src/freertos.c

@@ -97,6 +97,7 @@ void MX_FREERTOS_Init(void) {
 	initRTC(&hi2c1);
 	initRTC(&hi2c1);
 	initPCF8574(&hi2c1);
 	initPCF8574(&hi2c1);
 	init_Fille();
 	init_Fille();
+	fc_Brassage();
 
 
   /* USER CODE END Init */
   /* USER CODE END Init */
 
 
@@ -146,6 +147,20 @@ void StartADCTask(void const * argument)
 
 
 	//HAL_ADCEx_Calibration_Start(&hadc);
 	//HAL_ADCEx_Calibration_Start(&hadc);
 	int Veau, Vair; //Variable de tension
 	int Veau, Vair; //Variable de tension
+	int oldVeau[10],oldVair[10];
+	for( int j = 0;j<9;j++){ //On fait 9 fois avant de rentrée dans la boucle une lecture de la tension pour initialiser le filtre
+		for (int i = 0; i < 100; i++) { // on viens lire 100 fois la tension
+			HAL_ADC_Start(&hadc);
+			HAL_ADC_PollForConversion(&hadc, 1);
+			Veau += HAL_ADC_GetValue(&hadc);
+			HAL_ADC_Start(&hadc);
+			HAL_ADC_PollForConversion(&hadc, 1);
+			Vair += HAL_ADC_GetValue(&hadc);
+			osDelay(10);
+			}
+			Vair=moyen(Vair/100.0,oldVair);
+			Veau=moyen(Veau/100.0,oldVeau);
+	}
 
 
 	/* Infinite loop */
 	/* Infinite loop */
 	for (;;) {
 	for (;;) {
@@ -162,15 +177,19 @@ void StartADCTask(void const * argument)
 			osDelay(10);
 			osDelay(10);
 		}
 		}
 
 
-		gl_tmpEau = convertADC_tmp(Veau / 100.0); //On convertie la tension en temperature.
-		gl_tmpAir = convertADC_tmp(Vair / 100.0);
+		Veau=moyen(Veau/100.0,oldVeau);
+		Vair=moyen(Vair/100.0,oldVair);
+
+		gl_tmpEau = convertADC_tmp(Veau); //On convertie la tension en temperature.
+		gl_tmpAir = convertADC_tmp(Vair);
 
 
+		float tmpEau = (gl_tmpEau /10.0) + 10.0;
 		gl_powerVentil1 = tmpToVent(gl_tmpEau);
 		gl_powerVentil1 = tmpToVent(gl_tmpEau);
 		gl_powerVentil2 = gl_powerVentil1;
 		gl_powerVentil2 = gl_powerVentil1;
 
 
 		fc_Ventilation();
 		fc_Ventilation();
 
 
-		osDelay(10000);
+		osDelay(1000);
 	}
 	}
   /* USER CODE END StartADCTask */
   /* USER CODE END StartADCTask */
 }
 }
@@ -186,9 +205,8 @@ void StartErreurTask(void const * argument)
 {
 {
   /* USER CODE BEGIN StartErreurTask */
   /* USER CODE BEGIN StartErreurTask */
   /* Infinite loop */
   /* Infinite loop */
-	for(;;)
-  {
-	 switch (gl_Erreur){
+	for(;;) {
+	 /*switch (gl_Erreur){
 	 	 case(0):
 	 	 case(0):
 			 //pas d'erreur
 			 //pas d'erreur
 			 break;
 			 break;
@@ -217,8 +235,8 @@ void StartErreurTask(void const * argument)
 	 		//TODO (Pas important) erreur de cas
 	 		//TODO (Pas important) erreur de cas
 	 		 break;
 	 		 break;
 
 
-	 }
-    osDelay(1000);
+	 }*/
+    osDelay(200);
   }
   }
   /* USER CODE END StartErreurTask */
   /* USER CODE END StartErreurTask */
 }
 }

+ 3 - 1
Soft/STM32/Ordinateur/Core/Src/stm32f0xx_it.c

@@ -241,13 +241,15 @@ void TIM6_IRQHandler(void)
 
 
 	if (Nourrisage == Nour_Nourrisage) {
 	if (Nourrisage == Nour_Nourrisage) {
 		Nourrisage = Nour_Brassage;
 		Nourrisage = Nour_Brassage;
-		fc_Brassage(Marche);
+		BrassageGeneral = Marche;
+		fc_Brassage();
 		startTIMNourrisage(10 * 60);
 		startTIMNourrisage(10 * 60);
 	} else if (Nourrisage == Nour_Brassage) {
 	} else if (Nourrisage == Nour_Brassage) {
 		Nourrisage = Nour_Remonter;
 		Nourrisage = Nour_Remonter;
 		fc_Remonter(Marche);
 		fc_Remonter(Marche);
 		startTIMNourrisage(60 * 60);
 		startTIMNourrisage(60 * 60);
 	} else if (Nourrisage == Nour_Remonter) {
 	} else if (Nourrisage == Nour_Remonter) {
+		Nourrisage = Nour_Normal;
 		fc_Ecumeur(Marche);
 		fc_Ecumeur(Marche);
 	} else {
 	} else {
 		//TODO (Pas important) erreur de cas
 		//TODO (Pas important) erreur de cas

+ 6 - 3
Soft/STM32/Ordinateur/Core/Src/tim.c

@@ -164,9 +164,9 @@ void MX_TIM6_Init(void)
 
 
   /* USER CODE END TIM6_Init 1 */
   /* USER CODE END TIM6_Init 1 */
   htim6.Instance = TIM6;
   htim6.Instance = TIM6;
-  htim6.Init.Prescaler = 9375;
+  htim6.Init.Prescaler = 320;
   htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
   htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim6.Init.Period = 64000;
+  htim6.Init.Period = 62500;
   htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
   htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
   if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
   if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
   {
   {
@@ -438,6 +438,9 @@ void startTIMOsmo(){
 void startTIMNourrisage() {
 void startTIMNourrisage() {
 	HAL_TIM_Base_Start_IT(&htim6);
 	HAL_TIM_Base_Start_IT(&htim6);
 }
 }
+void stopTIMNourrisage(){
+	HAL_TIM_Base_Stop_IT(&htim6);
+}
 
 
 void startTIMBrassage() {
 void startTIMBrassage() {
 	gl_timerInter =0;
 	gl_timerInter =0;
@@ -497,7 +500,7 @@ uint16_t PourcentageToValue(uint8_t val) {
 }
 }
 
 
 uint8_t tmpToVent(uint8_t tmp){
 uint8_t tmpToVent(uint8_t tmp){
-	tmp = tmp *10 + 10;
+	tmp = (tmp /10.0) + 10.0;
 	if (tmp < 26)
 	if (tmp < 26)
 		return 0;
 		return 0;
 	else if (tmp < 26.5)
 	else if (tmp < 26.5)