PepeMax
October 18, 2021, 10:48am
1
Salut tout le monde, je cherche un moyen de vérifier si mon EEPROM est vide ou non.
J'ai déjà tenté ce bout de code sauf que si mon Arduino est neuf bah il plante et redémarre :
int addr_ssid = 50;
int addr_password = 51;
const char *ssid = "xxxxx";
const char *password = "xxxxx";
void setup() {
Serial.begin(115200);
EEPROM.begin(512);
for (int i = addr_ssid; i < addr_ssid + 50; ++i)
{
ssid += char(EEPROM.read(i));
}
for (int i = addr_password; i < addr_password + 255; ++i)
{
password += char(EEPROM.read(i));
}
}
Merci à vous
Ce code est bourré d'incohérences.
Comment peux-tu avoir :
un ssid à l'adresse 50, de longueur 50, donc qui va occuper les adresses de 50 à 100
un password à l'adresse 51, de longueur 255
Les deux se chevauchent largement !
D'autre part ssid += x ne fait qu'incrémenter le pointeur ssid, idem pour le password
Tu ferais mieux de regrouper ssid et password dans une structure et de lire l'ensemble avec EEPROM.get()
Un ssid fait au maximum 32 caractères, un password 63 :
#include "EEPROM.h"
struct id
{
char ssid[33];
char password[64];
};
struct id id = {"myssid", "mypass"};
void setup() {
Serial.begin(115200);
EEPROM.begin(512);
// Deux lignes pour enregistrer id (à commenter après le premier lancement)
EEPROM.put(0, id);
EEPROM.commit();
memset(&id, 0, sizeof(id));
EEPROM.get(0, id);
Serial.printf("ssid: %s\n", id.ssid);
Serial.printf("password: %s\n", id.password);
}
void loop() {
}
PepeMax
October 18, 2021, 12:17pm
4
Effectivement, en relisant c'est des erreurs
PepeMax
October 18, 2021, 12:22pm
5
Merci pour ta réponse, pourrais tu juste m'expliquer plus le fonctionnement du code s'il te plaît.
Est-ce que le char[.] est bien compatible avec ça :
Après je ne connais pas cette structure enfin comment ça marche et qu'est-ce que c'est.
struct id id = {"myssid", "mypass"};
Pour l'instant je vais te poser que ces questions et dès que j'aurais compris je t'en poserai une autre.
Merci en tout cas
On peut passer un tableau de char à une méthode qui attend un char *.
Au sujet de la structure :
EEPROM est un peu dépassé pour stocker des paramètres. La préférence actuelle est plutôt preferences :
Je vais lire ça pour en apprendre un peu plus
C'est super ça !
Je ne connaissais pas et c'est pile poil ce qu'il me faut.
Encore merci
Certainement plus pratique
68tjs
October 20, 2021, 7:34am
11
J'ai une question : coté durée de vie en écritures multiples Eeprom ou Flash même combat.
Et même désavantage Flash.
Référence datasheet avr nombre max d'écriture garanti :
Flash 10 000
Eeprom 100 000
La Flash reste un moyen de stokage à ménager.
Oui mais dans le cas d'un ESP32 EEPROM = FLASH.
https://docs.espressif.com/projects/espressif-esp-faq/en/latest/software-framework/storage.html
Typical flash lifetime is 100 k erase cycles.
Et dans le cas de PepeMax , c'est pour du paramètre de fonctionnement, pas pour enregistrer des donnée périodiquement.
system
Closed
April 18, 2022, 8:23am
13
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.