My_Eeprom.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #include "My_Eeprom.h"
  2. #include <EEPROM.h>
  3. #include <Arduino.h>
  4. //#include <SoftwareSerial.h>
  5. //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)
  6. int Write_EEPROM(uint8_t *tab, int nb){
  7. int add = EEPROM.read(0)<<8;
  8. add = EEPROM.read(1);
  9. if((add+nb)>MAXEEPROM)
  10. return -1;
  11. for (int i=0;i<nb;i++){
  12. EEPROM.update(add+2+i,tab[i]);
  13. }
  14. return 0;
  15. }
  16. //remet a 0 le pointeur d'ecriture
  17. int erase(){
  18. EEPROM.update(0,0);
  19. EEPROM.update(1,0);
  20. }
  21. //renvoit la date au format 16 bit
  22. void date(uint8_t *date){
  23. int jour = 1;
  24. int heure = 10;
  25. int mine =11;
  26. uint16_t tmp =jour<<12+heure*mine;
  27. date[0]=tmp>>8;
  28. date[1]=tmp;
  29. }
  30. //decode la date
  31. void readdate(uint16_t date, uint8_t* jour, uint8_t* heure, uint8_t* mine){
  32. *jour = (uint8_t) date>>12;
  33. *heure = (uint8_t) (date&0x5FFF)%60;
  34. *mine = (uint8_t) (date&0x5FFF)-(*heure)*60;
  35. }
  36. //Affiche le contenue de l'EEPROM de facon claire
  37. void AfficheEEprom(){
  38. int add = EEPROM.read(0)<<8;
  39. add = EEPROM.read(1);
  40. Serial.println("/***********DEBUT***********/");
  41. uint8_t jour,heure,mine;
  42. uint16_t date;
  43. uint8_t code;
  44. for( int i =2 ; i<add ; i+3){
  45. date=EEPROM.read(i);
  46. date=EEPROM.read(i+1)<<8;
  47. readdate(date,&jour,&heure,&mine);
  48. Serial.print("J : ");
  49. Serial.print(jour);
  50. Serial.print(" ");
  51. Serial.print(heure);
  52. Serial.print("H");
  53. Serial.print(mine);
  54. switch(EEPROM.read(i+2)){
  55. case(ECUON):
  56. Serial.println(" Ecumeur ON");
  57. break;
  58. case(ECUOF):
  59. Serial.println(" Ecumeur OFF");
  60. break;
  61. case(BR1ON):
  62. Serial.println(" BRASSAGE1 ON");
  63. break;
  64. case(BR1OF):
  65. Serial.println(" BRASSAGE1 OFF");
  66. break;
  67. case(BR2ON):
  68. Serial.println(" BRASSAGE2 ON");
  69. break;
  70. case(BR2OF):
  71. Serial.println(" BRASSAGE2 OFF");
  72. break;
  73. case(REMON):
  74. Serial.println(" REMONTER ON");
  75. break;
  76. case(REMOF):
  77. Serial.println(" REMONTER OFF");
  78. break;
  79. case(OSMON):
  80. Serial.println(" OSMOLATION ON");
  81. break;
  82. case(OSMOF):
  83. Serial.println(" OSMOLATION OFF");
  84. break;
  85. case(CHAON):
  86. Serial.println(" CHAUFFAGE ON");
  87. break;
  88. case(CHAOF):
  89. Serial.println(" CHAUFFAGE OFF");
  90. break;
  91. case(TEBON):
  92. Serial.println(" TECH BAS ON");
  93. break;
  94. case(TEBOF):
  95. Serial.println(" TECH BAS OFF");
  96. break;
  97. case(TEHON):
  98. Serial.println(" TECH HAUT ON");
  99. break;
  100. case(TEHOF):
  101. Serial.println(" TECH HAUT OFF");
  102. break;
  103. case(REBON):
  104. Serial.println(" RESERVE BAS ON");
  105. break;
  106. case(REBOF):
  107. Serial.println(" RESERVE BAS OFF");
  108. break;
  109. case(CUHON):
  110. Serial.println(" CUVE HAUT ON");
  111. break;
  112. case(CUHOF):
  113. Serial.println(" CUVE HAUT OFF");
  114. break;
  115. }
  116. }
  117. Serial.println("/************FIN************/");
  118. }
  119. //Enregistre dans l'Eeprom l'evenement en ecrivant la date + le numero de l'evenement
  120. void Enregistre(uint8_t even){
  121. uint8_t data[3];
  122. date(data);
  123. data[2]=even;
  124. Write_EEPROM(data,3);
  125. }