Bonjour et bonne année a la communauté Arduinaute
J'ai fais l’acquisition depuis peu d'une carte Arduino Mega, je me suis amusé un temps avec les exemples le l'Ide pour comprendre les subtilités du langage C ,après avoir lu et rerelu les divers sites, blogs, tutos , et autres, j'essaye de faire mon premier programme.
Ce programme consiste a incrémenté et décrémenté une variable de temps comprise entre 15ms et 70ms a l'aide de deux boutons poussoirs et de sauvegarder dans l'EEprom la dernière valeur programmé pour la retrouvé une fois la Mega remise sous tension.
Le programme fonctionne, par contre j'ai lu que d’écrire souvent dans l'EEprom réduisais sa durée de vie (1000000 d’écritures environ) et qu'il était préférable d’utilisé EEprom.update afin de ne pas réécrire des valeurs déjà enregistré.
Ma question, comment fait on pour mettre en place cette fonction, peut on la mettre avant EEprom.put ?
si je laisse EEprom.put il y aura forcement une réécriture!
Bref je ne comprend pas cette subtilité et ne sais comment la mette en place.
Je joint le code que j'ai réalisé en espèrent qu'il soit compréhensible et pas trop faux.
Merci a ceux qui m’aideront a avancé.
#include <EEPROM.h>
#include "simpleBouton.h"
simpleBouton bouton_plus(7);
simpleBouton bouton_moins(8);
int variable_temps=0; // la variable_temps doit etre comprise entre 15ms et 70ms
int adresse = 0;
const uint32_t tempo = 400; // variable de temps pour simpleBouton
uint32_t delai;
void increment_plus() // increment en + de la variable variable_temps
{
variable_temps++;
if (variable_temps >= 70)
{
variable_temps=70;
}
EEPROM.put(adresse, variable_temps);
Serial.print(" Temps programmer ");
Serial.println(variable_temps);
}
void increment_moins() // increment en - de la variable variable_temps
{
variable_temps--;
if (variable_temps <= 15)
{
variable_temps=15;
}
EEPROM.put(adresse, variable_temps);
Serial.print(" Temps programmer ");
Serial.println(variable_temps);
}
void setup()
{
Serial.begin(9600);
EEPROM.get(adresse, variable_temps); // lecture de l'EEprom au demmarage du programme
Serial.print(" Temps enregistrer ");
Serial.println(variable_temps);
}
void loop()
{
bouton_plus.actualiser();
bouton_moins.actualiser();
if (bouton_plus.vientDEtreEnfonce())
{
delai = 0;
}
if (bouton_plus.estEnfonceDepuisAuMoins(delai))
{
increment_plus();
delai = delai + tempo;
}
if (bouton_moins.vientDEtreEnfonce())
{
delai = 0;
}
if (bouton_moins.estEnfonceDepuisAuMoins(delai))
{
increment_moins();
delai = delai + tempo;
}
}