| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #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);
- }
-
|