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