Browse Source

Creation du testeur

Remy 4 years ago
parent
commit
5ba203327c

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

@@ -0,0 +1 @@
+,LAPTOP-MUMLJTR4/utilisateur,LAPTOP-MUMLJTR4,22.08.2022 16:34,file:///C:/Users/utilisateur/AppData/Roaming/LibreOffice/4;

BIN
Doc/Aide Soft Testeur.ods


+ 0 - 0
Soft/Testeur/testeur.kicad_prl → Doc/DocTest/testeur.kicad_prl


+ 0 - 0
Soft/Testeur/testeur.kicad_pro → Doc/DocTest/testeur.kicad_pro


+ 0 - 0
Soft/Testeur/testeur.kicad_sch → Doc/DocTest/testeur.kicad_sch


+ 138 - 0
Soft/Arduino/Testeur/My_Eeprom.cpp

@@ -0,0 +1,138 @@
+#include "My_Eeprom.h"
+#include <EEPROM.h>
+#include <Arduino.h>
+//#include <SoftwareSerial.h>
+
+
+//Ecrit le nombre de bit dans l'EEPROM a la suite de la derniere ecriture (Si l'EEPROM est plein n'ecrit pas return -1)
+int Write_EEPROM(uint8_t *tab, int nb){
+  int add = EEPROM.read(0)<<8;
+  add =  EEPROM.read(1);
+
+  if((add+nb)>MAXEEPROM)
+    return -1;
+
+  for (int i=0;i<nb;i++){
+    EEPROM.update(add+2+i,tab[i]);
+  }
+  return 0;
+}
+
+//remet a 0 le pointeur d'ecriture
+int erase(){
+  EEPROM.update(0,0);
+  EEPROM.update(1,0);
+}
+
+//renvoit la date au format 16 bit
+void date(uint8_t *date){
+  int jour = 1;
+  int heure = 10;
+  int mine =11;
+	uint16_t tmp =jour<<12+heure*mine;
+	date[0]=tmp>>8;
+  date[1]=tmp;
+}
+
+//decode la date
+void readdate(uint16_t date, uint8_t* jour, uint8_t* heure, uint8_t* mine){
+	*jour 	= (uint8_t) date>>12;
+	*heure	= (uint8_t) (date&0x5FFF)%60;
+	*mine	= (uint8_t) (date&0x5FFF)-(*heure)*60;
+}
+
+//Affiche le contenue de l'EEPROM de facon claire
+void AfficheEEprom(){
+  int add = EEPROM.read(0)<<8;
+  add =  EEPROM.read(1);
+  Serial.println("/***********DEBUT***********/");
+  uint8_t jour,heure,mine;
+  uint16_t date;
+  uint8_t code;
+  for( int i =2 ; i<add ; i+3){
+    date=EEPROM.read(i);
+    date=EEPROM.read(i+1)<<8;
+	
+	readdate(date,&jour,&heure,&mine);
+  Serial.print("J : ");
+	Serial.print(jour);
+	Serial.print(" ");
+	Serial.print(heure);
+	Serial.print("H");
+	Serial.print(mine);
+    switch(EEPROM.read(i+2)){
+		case(ECUON):
+			Serial.println(" Ecumeur ON");
+		break;
+		case(ECUOF):
+			Serial.println(" Ecumeur OFF");
+		break;
+		case(BR1ON):
+			Serial.println(" BRASSAGE1 ON");
+		break;
+		case(BR1OF):
+			Serial.println(" BRASSAGE1 OFF");
+		break;
+		case(BR2ON):
+			Serial.println(" BRASSAGE2 ON");
+		break;
+		case(BR2OF):
+			Serial.println(" BRASSAGE2 OFF");
+		break;
+		case(REMON):
+			Serial.println(" REMONTER ON");
+		break;
+		case(REMOF):
+			Serial.println(" REMONTER OFF");
+		break;
+		case(OSMON):
+			Serial.println(" OSMOLATION ON");
+		break;
+		case(OSMOF):
+			Serial.println(" OSMOLATION OFF");
+		break;
+		case(CHAON):
+			Serial.println(" CHAUFFAGE ON");
+		break;
+		case(CHAOF):
+			Serial.println(" CHAUFFAGE OFF");
+		break;
+		case(TEBON):
+			Serial.println(" TECH BAS ON");
+		break;
+		case(TEBOF):
+			Serial.println(" TECH BAS OFF");
+		break;
+		case(TEHON):
+			Serial.println(" TECH HAUT ON");
+		break;
+		case(TEHOF):
+			Serial.println(" TECH HAUT OFF");
+		break;
+		case(REBON):
+			Serial.println(" RESERVE BAS ON");
+		break;
+		case(REBOF):
+			Serial.println(" RESERVE BAS OFF");			
+		break;
+		case(CUHON):
+			Serial.println(" CUVE HAUT ON");
+		break;
+		case(CUHOF):
+			Serial.println(" CUVE HAUT OFF");
+		break;
+    }
+    
+  }
+  
+  Serial.println("/************FIN************/");
+}
+
+//Enregistre dans l'Eeprom l'evenement en ecrivant la date + le numero de l'evenement
+void Enregistre(uint8_t even){
+  uint8_t data[3];
+  date(data);
+  data[2]=even;
+  Write_EEPROM(data,3);
+}
+  

+ 51 - 0
Soft/Arduino/Testeur/My_Eeprom.h

@@ -0,0 +1,51 @@
+/*
+ * Pour le testeur j'ai besoin d'ecrire dans l'eeprom. Je stock dans les 2 premiers bit le pointeur sur l'ecriture
+ * Le format de l'ecriture est sur 3 bit les 2 premier bit sont date et "jour" codé sur 60(min)*24(h)sur les 11 premier bit et le jour sur les 5 restant (max 32 jours)	
+ */
+#ifndef __MY_EEPROM_H__
+#define __MY_EEPROM_H__
+
+#include <stdint.h>
+
+#define ECUON 	0
+#define ECUOF 	1
+#define BR1ON	2
+#define	BR1OF	3
+#define BR2ON	4
+#define BR2OF	5
+#define REMON	6
+#define REMOF	7
+#define OSMON	8
+#define OSMOF	9
+#define CHAON	10
+#define CHAOF	11
+#define TEBON	12
+#define TEBOF	13
+#define TEHON	14
+#define TEHOF	15
+#define REBON	16
+#define REBOF	17
+#define CUHON	18
+#define CUHOF	19
+
+#define MAXEEPROM 4096
+
+//Ecrit le nombre de bit dans l'EEPROM a la suite de la derniere ecriture (Si l'EEPROM est plein n'ecrit pas return -1)
+int Write_EEPROM(uint8_t *tab, int nb);
+
+//remet a 0 le pointeur d'ecriture
+int erase();
+
+//renvoit la date au format 16 bit
+uint16_t date(void);
+
+//decode la date
+void readdate(uint16_t date, uint8_t* jour, uint8_t* heure, uint8_t* min);
+
+//Affiche le contenue de l'EEPROM de facon claire
+void AfficheEEprom();
+
+//Enregistre dans l'Eeprom l'evenement en ecrivant la date + le numero de l'evenement
+void Enregistre(uint8_t even);
+
+#endif

+ 14 - 0
Soft/Arduino/Testeur/Testeur.h

@@ -0,0 +1,14 @@
+#ifndef __TESTEUR_H__
+#define __TESTEUR_H__
+
+#include <stdint.h>
+
+uint8_t tab[MAXEEPROM];
+int pinBRAS1 = 2;
+int pinBRAS2 = 3;
+int pinOSMOL = 18;
+int pinCHAUF = 19;
+int pinECUME = 20;
+int pinREMON = 21;
+
+#endif

+ 83 - 0
Soft/Arduino/Testeur/Testeur.ino

@@ -0,0 +1,83 @@
+#include "My_Eeprom.h"
+#include <EEPROM.h>
+#include "Testeur.h"
+
+
+
+void setup() {
+  Serial.begin(115200);
+  
+  pinMode(pinBRAS1, INPUT);
+  pinMode(pinBRAS2, INPUT);
+  pinMode(pinOSMOL, INPUT);
+  pinMode(pinCHAUF, INPUT);
+  pinMode(pinECUME, INPUT);
+  pinMode(pinREMON, INPUT);
+
+  attachInterrupt(digitalPinToInterrupt(pinBRAS1), fc_BRAS1, CHANGE); //CHANGE, RISING,FALLING
+  attachInterrupt(digitalPinToInterrupt(pinBRAS2), fc_BRAS2, CHANGE); //CHANGE, RISING,FALLING
+  attachInterrupt(digitalPinToInterrupt(pinOSMOL), fc_OSMO, CHANGE); //CHANGE, RISING,FALLING
+  attachInterrupt(digitalPinToInterrupt(pinCHAUF), fc_CHAUFF, CHANGE); //CHANGE, RISING,FALLING
+  attachInterrupt(digitalPinToInterrupt(pinECUME), fc_ECUM, CHANGE); //CHANGE, RISING,FALLING
+  attachInterrupt(digitalPinToInterrupt(pinREMON), fc_REMO, CHANGE); //CHANGE, RISING,FALLING
+}
+
+void loop() {
+  //analogRead(vent1);
+  //analogRead(vent2);
+  delay(5000);
+}
+
+void fc_BRAS1() {
+  if(digitalRead(pinBRAS1)){
+    Enregistre(BR1ON);
+  }
+ else{
+  Enregistre(BR1OF);
+ }
+}
+
+void fc_BRAS2() {
+  if(digitalRead(pinBRAS2)){
+    Enregistre(BR2ON);
+  }
+ else{
+  Enregistre(BR2OF);
+ }
+}
+
+void fc_OSMO() {
+  if(digitalRead(pinOSMOL)){
+    Enregistre(OSMON);
+  }
+ else{
+  Enregistre(OSMOF);
+ }
+}
+
+void fc_CHAUFF() {
+  if(digitalRead(pinCHAUF)){
+    Enregistre(CHAON);
+  }
+ else{
+  Enregistre(CHAOF);
+ }
+}
+
+void fc_ECUM() {
+  if(digitalRead(pinECUME)){
+    Enregistre(ECUON);
+  }
+ else{
+  Enregistre(ECUOF);
+ }
+}
+
+void fc_REMO() {
+  if(digitalRead(pinREMON)){
+    Enregistre(REMON);
+  }
+ else{
+  Enregistre(REMOF);
+ }
+}