EEPROM esp8266

Bonjour,

Besoin d’un éclairage car je ne comprend pas mon erreur.

Dans mon code je déclare des variables globales, celles ci sont appelés dans certaines fonctions et tout fonctionne normalement.

Lorsque je déclare ces variables sous forme de tableau,
unsigned int Parametre[4]=[1,75,30,20]

Et bien je me retrouve avec des fonctions qui accèdent à des variables égales à zéro ??
Y à t’il un truc avec les tableaux ?

Merci pour vos lumières !!

Normalement, les variables globales sont ....globales.
Mets ton code ce sera plus facile de discuter.

//EEPROM
  #include <EEPROM.h>


//TABLEAU PARAMETRE
  //                                         {"Consigne %",   "VMC"   , "Hysteresis ", "Td"  };
    unsigned int Parametre [4]= {    75            ,     1        ,     30           ,   0    };
     
      #define CONSIGNE 0
      #define VMC 1
      #define HYSTERESIS_VMC 2
      #define TD 3
      
    struct MaSauvegarde { unsigned int SaveParametre [4];} ;



void SAUVEGARDE_PARAMETRE_EEPROM () {
    MaSauvegarde Config;
    for(int i=0;i<4;i++){Config.SaveParametre[i]=Parametre[i]; }
    EEPROM.put(0,Config);

}



void setup() {         // --------------------------  SETUP  -----------------------------------------  SETUP  ------------------------------------

 
// EEPROM LECTURE DES PARAMETRES SAUVEGARDE
    MaSauvegarde Config_lue;
      EEPROM.get(0,Config_lue);
      for(int i=0;i<4;i++){Parametre[i] = Config_lue.SaveParametre[i]; }
    


void comparerMot()
{
  
 switch (mot[0]) {
    case 'p':   
        //code
      break;
    
    case 'h': // Parametre d'Hysteresis
          //transfert de 'mot' dans 'Hyst'
          char hyst[3]; for (int i=1; i <4; i++) {hyst[i-1] = mot[i] ;}  hyst[3]='\0';

          // RAZ 'mot'
          for (int i=0; i <4; i++) {mot[i] ='\0' ;}

          //transfert de 'Hyst' dans mon tableau parametre
          Parametre[HYSTERESIS_VMC] = atoi( hyst );

          SAUVEGARDE_PARAMETRE_EEPROM ();
      break;
    
    case 'c': //commande
        if (mot[1]== 't'){ code } 
        if (mot[1]== 'v'){ code }
        if (mot[1]== 'c'){ Parametre[CONSIGNE] = mot[2];  }

        SAUVEGARDE_PARAMETRE_EEPROM ();
       break;
  
  
     // ETC.....
    

    default:
      break;
      
    }  //FIN SWITCH
}//FIN COMPARE MOT

Bonjour,

Pourquoi passer par une structure?
il suffit de faire

  EEPROM.put(0, Parametre);  // sauvegarde

  EEPROM.get(0, Parametre);  // recupération

Ok, ok,
Bonne remarque... lol
Je m’étais pencher sur l’eeprom Il y a quelque temps pour un autre projet, et à vrai dire je ne sais plus pourquoi j’utilisais la structure...poisson rouge sur le coup...
Et c’est un copié collé bette et méchant...

En tous cas même après cette simplification évidente mon pb reste le même, et la variable ‘parametre’ m’est retourné égale à zéro...

Je pige pas là...

C'est quoi comme carte? car ça fonctionne sans problème sur une carte avec processeur avr.

Une lecture brute des données donne quoi ?
Problème en écriture ou en lecture ?

le code donné ne compile pas... :o :frowning: :confused:

Je suis avec une wemos d1 mini

Mon sketche tourne très bien et toutes les données sont bien traitées.

Par contre si je débranche et rebranche, je perd les données sauvegardées...

et y'a combien d'EEPROM dans un WeMos?...

POSTEZ VOTRE CODE..

on est pas devin...

(enfin si je devais parier, je dirais que vous n'avez pas de EEPROM.begin(xx);avec xx assez grand pour vos données ?)

Les esp8266 n'ont pas d'eeprom.
Il y a émulation d'eeprom dans la flash. Il faut utiliser EEPROM.begin() et EEPROM.commit()

kamill:
Les esp8266 n'ont pas d'eeprom.
Il y a émulation d'eeprom dans la flash. Il faut utiliser EEPROM.begin() et EEPROM.commit()

Damned, je voulais qu'il cherche :slight_smile:

@ GuillaumedeGrenoble
EEPROM sur ESP8266/Arduino ? : RTFM
le fil de discussion gagnerait à être renommé EEPROM avec ESP8266, parce que le soucis rencontré n'a pas grand chose voir avec la portée des variables

Typique problème XY

@J-M-L
Je te trouve un tentiné saute à la gorge, mais bon la démarche est bonne et crois moi que pour chercher et m’interesser je suis le premier!!

J’ai cru que mon pb venais du scope...erreur aveuglante...

Bien l’impression que je v résoudre grâce à vos lumières !!!
Merci merci

@alfch
Merci pour ce lien, Allez y’a plus qu’a Potasser.

Pour l’histoire:
En effet, j’ai fait la mise au point du projet sur arduino mégas, et ma sauvegarde fonctionnait bien.
c’est le dernier point qu’il me manquait à ajouter pour le définitif...

La gestion de ma vmc double flux avec capteur et relais sans fil.
Une gestion par écran tactile ds le salon avec affichage d’une météo ludique via accuweather pour mes loulous...

Et en bonus l’appli sur smartphone...j’ai bien bossé, et super content du résultat !!

Faut pas prendre mes commentaires pour un jugement de valeur sur votre personne

Le problème XY C’était un commentaire sur la situation. Vous pensiez avoir à faire a un problème de scope et ça a conduit la discussion dans la mauvaise direction

Tout à fait je me suis fait berner !!

Bravo!

GuillaumeDeGrenoble:
La gestion de ma vmc double flux avec capteur et relais sans fil.
Une gestion par écran tactile ds le salon avec affichage d’une météo ludique via accuweather pour mes loulous...

Et en bonus l’appli sur smartphone...j’ai bien bossé, et super content du résultat !!

Une fois la mise au point terminée, il faudra publier ton projet dans la rubrique "Réalisations et Projets Finis". Cela pourrait intéresser du monde.