Smooth sur trois flex

Bonjour a tous, j'ai ce code qui gère le smooth de trois flex, j'ai trois paramétres que j'ai mis en mémoire EEPROM qui sont un nombre d'échantillons, ma question est comment appeler la lecture de l'EEPROM extraire la variable enregistréé et la placer sur la ligne:

""RunningAverage MoyGlissThumb(IntThumb);"" a la place de IntThumb.

""RunningAverage MoyGlissMiddle(IntMiddle);"" a la place de IntMiddle.

""RunningAverage MoyGlissLittle(IntLittle);"" a la place de IntLittle.

Voila le code que j'ai fait:

#include "RunningAverage.h"
#include "EEPROM.h"

#define EEPROM_SIZE 64 // Max 512

// String sur EEPROM
String StringThumb; 
String StringMiddle; 
String StringLittle;

// Convertion String en int
int IntThumb;
int IntMiddle;
int IntLittle;

// Création des objets des Moyennes Glissantes
//RunningAverage MoyGlissThumb(280);  // Fonctionne bien
//RunningAverage MoyGlissMiddle(350);  // Fonctionne bien
//RunningAverage MoyGlissLittle(400);  // Fonctionne bien

// Création des objets des Moyennes Glissantes
RunningAverage MoyGlissThumb(IntThumb);  // Bloqué ici
RunningAverage MoyGlissMiddle(IntMiddle);  // Bloqué ici
RunningAverage MoyGlissLittle(IntLittle);  // Bloqué ici

// Compteur d'échantillons
int Cpt = 0;         
// Les moyennes glissantes des échantillons 
// peuvent etre de type float ou int
int MoyThumb = 0;            
int MoyMiddle = 0; 
int MoyLittle = 0; 

int PinThumb = 32;
int PinMiddle = 33;
int PinLittle = 35;

int EchThumb;
int EchMiddle;
int EchLittle;


void setup() 
{
Serial.begin(115200);

if (!EEPROM.begin(EEPROM_SIZE))
{
Serial.print("FAIL MEMORY "); 
Serial.println("INIT"); 
delay(1000000);
}

MoyGlissThumb.clear();
MoyGlissMiddle.clear();
MoyGlissLittle.clear();

// Lire les dernieres valeurs de EEPROM:
StringThumb = EEPROM.readString(30);
StringMiddle = EEPROM.readString(35);
StringLittle = EEPROM.readString(40);

// Convertion des valeur EEPROM String en int ou float
IntThumb = StringThumb.toInt();
IntMiddle = StringMiddle.toInt();
IntLittle = StringLittle.toInt(); 

} // Fin seup()

void loop() 
{

MonCode();
  
// Lectures des capteurs brutes non lissées
EchThumb = analogRead(PinThumb);
EchMiddle = analogRead(PinMiddle);
EchLittle = analogRead(PinLittle);

// Ajout de l'échantillon à l'objet "Moyenne Glissante"
MoyGlissThumb.addValue(EchThumb);
MoyGlissMiddle.addValue(EchMiddle);
MoyGlissLittle.addValue(EchLittle);

// Récupération des moyennes glissantes
// Variables a exploiter dans le code final
MoyThumb = MoyGlissThumb.getAverage();
MoyMiddle = MoyGlissMiddle.getAverage();
MoyLittle = MoyGlissLittle.getAverage();

Serial.print(IntThumb);
Serial.print(",");
Serial.print(IntMiddle);
Serial.print(",");
Serial.print(IntLittle);
Serial.print(" --- ");
Serial.print(EchThumb);
Serial.print(",");
Serial.print(MoyThumb); 
Serial.print(" -- ");
Serial.print(EchMiddle);
Serial.print(",");
Serial.print(MoyMiddle); 
Serial.print(" -- ");
Serial.print(EchLittle);
Serial.print(",");
Serial.println(MoyLittle); 

// Incrémentation du compteur
Cpt++;
// Effacement de l'historique pour éviter les débordements
if (Cpt == 300) // !Ne pas changer! 
{
Cpt = 0;
MoyGlissThumb.clear();
MoyGlissMiddle.clear();
MoyGlissLittle.clear();
}
delay(1);
} // Fin loop()

Le smooth fonctionne bien.
Merci pour votre aide...
Fred

quel arduino et quelle EEPROM ?

Salut, je suis avec un ESP32 et sur l'EEPROM de l'ESP32, tout fonctionne bien mais je n'arrive pas a placer les variables de l'EEPROM sur les lignes:

RunningAverage MoyGlissThumb(IntThumb);
RunningAverage MoyGlissMiddle(IntMiddle);
RunningAverage MoyGlissLittle(IntLittle);

Sur esp32 vous devriez utiliser la bibliothèque Préférences (Il ny a pas de vraie EEPROM, c’est en mémoire flash).

Oui je sais, je me suis mélangé les pinceaux en l’écrivant..
En général je me sert toujours de la mémoire flash sans problèmes, mais la je cale, j'ai juste trois int en mémoire...

Vous utilisez alors

putInt(const char* key, int32_t value)

Pour écrire et pour relire

getInt(const char* key, const int32_t defaultValue)

Oui mais par rapport a mon code je le mets ou ?

Excuse moi je suis novice....

Lisez le tuto dont j’ai donné le lien pour apprendre à utiliser ce stockage

Ensuite vous mettez l’écriture quand il faut sauvegarder et la lecture quand il faut restaurer

OK j'étais entrain de le faire, je vous ferais savoir

Fred

Essayez et si vous galérez on vous aidera, mais il faut que vous compreniez ce que la bibliothèque fait

J'ai déjà réussi a écrire et lire des données cela promet...

1 Like

Bravo

GENIAL cela fonctionne bien, merci a vous J-M-L Jackson.

Problème résolu il est vraiment simple, j'ai compris....

Super - vous voyez qu’il ne faut pas baisser les bras trop vite, ayez confiance en vos capacités !

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.