You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

my_EEPROM.h 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. Bibliothèque permettant de stocker 2 valeurs en EEPROM
  3. @see : https://projetsdiy.fr/esp8266-comment-lire-ecrire-effacer-eeprom/
  4. */
  5. #include <EEPROM.h>
  6. /*----------------------------------------------------------------------------
  7. Permet d'écrire une chaine de caractère en EEPROM à une adresse donnée.
  8. */
  9. void EEPROM_writeString(char add, String data) {
  10. int _size = data.length();
  11. int i;
  12. for (i = 0; i < _size; i++)
  13. {
  14. EEPROM.write(add + i, data[i]);
  15. }
  16. EEPROM.write(add + _size, '\0'); //Add termination null character for String Data
  17. EEPROM.commit();
  18. }
  19. /*----------------------------------------------------------------------------
  20. Permet de lire une chaine de caractère en EEPROM à une adresse donnée.
  21. */
  22. String EEPROM_read_String(char add){
  23. char data[100]; //Max 100 Bytes
  24. int len=0;
  25. unsigned char k;
  26. k=EEPROM.read(add);
  27. while(k != '\0' && len<500) //Read until null character
  28. {
  29. k=EEPROM.read(add+len);
  30. data[len]=k;
  31. len++;
  32. }
  33. data[len]='\0';
  34. return String(data);
  35. }
  36. /*----------------------------------------------------------------------------
  37. Permet de mettre en place la gestion du nombre de leds en EEPROM.
  38. */
  39. void EEPROM_Start() {
  40. EEPROM.begin(EEPROM_LEDS_SIZE + EEPROM_DEVICEID_SIZE + 2);
  41. if ( writeToEEPROM == true ) {
  42. Serial.println("* * * * * * * * * * * * * Stockage des valeurs en EEPROM * * * * * * * * * * * * * * ");
  43. // Ecriture des valeurs dans l'EEPROM
  44. EEPROM.put(0, LED_COUNT); // on a un entier, on peut utiliser put
  45. EEPROM_writeString(sizeof(LED_COUNT), DeviceID); // on a une chaine de caractère, on doit utiliser une fonction custom
  46. }
  47. // Relecture de la valeur stockée dans l'EEPROM
  48. EEPROM.get(0, LED_COUNT);
  49. Serial.print("Nb leds (from EEPROM) LED_COUNT: "); Serial.println(LED_COUNT);
  50. String data = EEPROM_read_String(sizeof(LED_COUNT)); // Lecture dans une string
  51. data.toCharArray(DeviceID, EEPROM_DEVICEID_SIZE); // Convertion de String en char
  52. Serial.print("DeviceID (from EEPROM) : "); Serial.println(DeviceID);
  53. }