Bonjour à tous.
Pour ceux qui me connaissent déja, toujours sur mon projet de stylo3D niveau programmation je suis face à un petit soucis. J'ai donc crée un autre sujet car ça concerne une autre partie.
Avons nous des connaisseurs de la fonction "EEPROM.writeAnything" ?
Je m'explique, je dois stocker dans l'eeprom un temps d'utilisation de 1000h => soit 3600000 secondes. J'avais commencé en le divisant. Par exemple prenons 2569872 :
- Partie dizaine et unité : 72
- Partie centaine et millième : 98
- Partie centaine et dizaine de millième : 56
- Partie million : 2
Mais il s'avère que ça fait beaucoup BEAUCOUP de variable après dans le programme et je ne m'en sors plus.
On m'a parlé de la fonction "EEPROM.writeAnything" qui apparement d'après ce que j'ai compris permettrais de stocker un nombre peut importe ça taille.
Je suis donc aller ici pour chercher des infos : Arduino Playground - EEPROMWriteAnything
Mais étant donné mon niveau sur arduino pas moyen de comprendre la syntaxe... si quelqu'un pourrait m'expliquer svp comment ça marche.
Voila mon programme (Qui ne marche pas car je n'arrive pas à déclarer EEPROMwriteanything et le programme est surement faux aussi..) :
#include <EEPROMAnything.h>
#include <EEPROM.h>
#include <TinkerKit.h>
#include <Wire.h>
#include "DS1307.h"
double SEC;
const int buttonPin = A2;
int buttonState = 0;
double result1;
double result2;
int comptage=0;
unsigned int resultfinal;
byte valuefinal;
int affichfinal;
const int adresse_epromfinal= 0;
DS1307 clock;//define a object of DS1307 class
void setup()
{
Serial.begin(9600);
clock.begin();
clock.fillByYMD(2014,3,27);// 06 Fevrier,2014
clock.fillByHMS(17,50,30);//13:53 30"
clock.fillDayOfWeek(THU);//Jeudi
clock.setTime();//write time to the RTC chip
}
void loop()
{
printTime();
calcul_SEC();
buttonState = digitalRead(buttonPin);
affichfinal = resultfinal>>2;
Serial.print("nombre avant sauvegarde: ");
Serial.println(affichfinal);
delay(1000);
// sauvegarde
EEPROMwriteAnything (adresse_epromfinal,resultfinal);
// EEPROM.write(adresse_epromfinal, resultfinal);
delay(200); // 1 sec
// Lecture
valuefinal = EEPROM.read(adresse_epromfinal);
Serial.print("nombre sauvegarde : ");
Serial.println(valuefinal, DEC);
Serial.println("\t");
}
/*--------------------------------------------------*
* Fonction: Affiche le temps sur le moniteur série *
*--------------------------------------------------*/
void printTime()
{
clock.getTime();
Affiche_HMS();
Serial.println(" ");
delay(500);
}
void Affiche_HMS()
{
Serial.print(clock.hour, DEC);
Serial.print(":");
Serial.print(clock.minute, DEC);
Serial.print(":");
Serial.print(clock.second, DEC);
}
void calcul_SEC()
{
buttonState = digitalRead ( buttonPin ) ;
if (buttonState == HIGH)
{
SEC= ((clock.hour)*36E2)+((clock.minute)*60)+ (clock.second);
Serial.println(SEC);
comptage++;
if (comptage==1)
{
result1= SEC;
}
if (comptage==2)
{
result2 = SEC;
resultfinal=(result2-result1)+1000; //// rajout de 995 secondes pour les tests
comptage=0;
}
}
}
Merci infiniment.