Oui en fait il faut que je change plusieurs truc pour l'instant bourré d'erreur ça me donne ça :
#include "RTClib.h"
#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;
#define adr_eprom_test 200 // For the test for 1st time init of the Arduino (First power on)
#define adresse_eeprom_compteur 0
boolean buse_changee = true; // buse changée? pour le premier lancement on considerera que la buse est neuve
double current_sec = 0;
double starting_sec = 0;
double final_sec = 0;
double current_delta_sec = 0;
int test;
double final_delta_sec; // !!! ATTENTION: NE PAS INITIALISER CETTE VARIABLE A 0 SINON LE TEMPS D'UTILISATION DE LA BUSE SERA REINITIALISE A CHAQUE REDEMARRAGE DE LA CARTE !!!
// for refresh time
const unsigned long DISPLAY_INTERVAL = 5000; // in ms
static unsigned long lastTime=0; // in ms
unsigned long time=millis(); // in ms
#define BOUTON_ENREGISTREMENT 3 // bouton poussoir pour démarrer et arreter l'enregistrement
#define BOUTON_CHANGER_BUSE 4 // bouton poussoir pour dire qu'on a changé la buse (sinon la led reste allumée) et on n'enregistre rien
#define LED_ENREGISTREMENT 12 // led qui s'allume dès qu'on enregistre et s'éteint quand on enregistre pas
#define LED_CHANGER_BUSE 13 // led qui s'allume dès qu'on doit changer la buse
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
EEPROM_readAnything(adr_eprom_test, test);
if (test != 12345)
{
EEPROM_writeAnything(adr_eprom_test,12345); // marqueur pour dire qu'on a déjà initialisé
delay(5); // ça prends 3,3 ms d'écrire dans l'eeprom donc on attend 5ms pour etre sur d'avoir les valeurs
EEPROM_writeAnything(adresse_eeprom_compteur, 0); // met à 0 la variable d'utilisation du stylo pour la 1ere utilisation
delay(5); // ça prends 3,3 ms d'écrire dans l'eeprom donc on attend 5ms pour etre sur d'avoir les valeurs
Serial.print("Premiere init OK! test=");
Serial.println(test);
Serial.print("temps d'utilisation du stylo precedemment enregistre:");
EEPROM_readAnything(adresse_eeprom_compteur, final_delta_sec);
delay(5);
Serial.println(final_delta_sec);
}
else
{
// si on a deja init. alors
// Lit les valeurs sauvées en EEPROM
EEPROM_readAnything(adresse_eeprom_compteur, final_delta_sec);
delay(5);
Serial.print("temps d'utilisation precedemment enregistre:");
Serial.println(final_delta_sec);
}
}
void loop()
{
// affiche l'heure toute les 5 sec
time=millis();
if (time-lastTime>DISPLAY_INTERVAL) // if at least DISPLAY_INTERVAL ms have passed
{
printTime();
lastTime=time; // reset timer
}
printTime();
calcul_SEC();
buttonState = digitalRead(buttonPin);
affichfinal = resultfinal>>2;
Serial.print("nombre avant sauvegarde: ");
Serial.println(affichfinal);
delay(1000);
// DEBUT ENREGISTREMENT
// détecte appui sur bouton d'enregistrement et commence le décompte
if (digitalRead(BOUTON_ENREGISTREMENT)==LOW && buse_changee == true)
// Mon bouton est a l'etat bas quand j'appuie et quand j'appuie pas il est a l'etat haut
// il faudra adapter le test a l'etat du bonton en question
// ATTENTION: on ne peut pas rentrer dans cette partie si la buse n'a pas ete changee
// c'est à dire si la variable buse_changee est à l'état 'FALSE' !!
{
delay(300); // délai anti rebond pour éviter de rentrer plusieur fois dans la boucle
current_sec=((clock.hour)*36E2)+((clock.minute)*60)+ (clock.second);
Serial.print("temps courant:");
Serial.println(current_sec);
comptage++; // 1st give starting, 2nd give final
if (comptage==1) // 1st give starting
{
starting_sec = current_sec;
Serial.print("debut de l'enregistrement a t1=");
Serial.println(starting_sec);
digitalWrite(LED_ENREGISTREMENT,HIGH); // on passe en mode enregistrement
}
if (comptage==2) // 2nd give final status and storage
{
// 1/4
// calcul de la fin du comptage
final_sec = current_sec;
Serial.print("fin de l'enregistrement a t2=");
Serial.println(final_sec);
current_delta_sec=(final_sec-starting_sec);
Serial.print("delta temps t2-t1=");
Serial.println(current_delta_sec);
// 2/4
// stockage de la fin dans l'eeprom
backup_eeprom();
// 3/4
// réinitialisation du bouton
comptage=0; // reset comptage
Serial.print("temps total d'utilisation du stylo:");
Serial.println(final_delta_sec);
// 4/4
// On éteint la led pour dire qu'on a fini d'enregistrer
digitalWrite(LED_ENREGISTREMENT,LOW);
// et du coup on repasse en mode écoute en sortant du if
}
}// FIN ENREGISTREMENT
// DEBUT CHANGEMENT BUSE
// Détecte si appui sur le bouton de changement de buse
if (digitalRead(BOUTON_CHANGER_BUSE)==LOW && buse_changee == false)
{
delay(300); // délai anti rebond pour éviter de rentrer plusieur fois dans la boucle
// si appui sur le bouton alors
// on met l'état de changement de buse à l'état VRAI
buse_changee = true;
// on réinitialise la variable à 0
final_delta_sec = 0;
EEPROM_writeAnything(adresse_eeprom_compteur, final_delta_sec);
delay(5); //
// et on éteint la led de suivi pour dire qu'on a changé la buse
digitalWrite(LED_CHANGER_BUSE,LOW);
Serial.println("BUSE CHANGEE!");
Serial.print("temps d'utilisation réinitialisé à :");
Serial.println(final_delta_sec);
}// FIN CHANGEMENT BUSE
}
// print time DS1307
void printTime()
{
Serial.print(clock.hour, DEC);
Serial.print(':');
Serial.print(clock.minute, DEC);
Serial.print(':');
Serial.print(clock.second, DEC);
Serial.println();
}
void backup_eeprom()
{
final_delta_sec = current_delta_sec + final_delta_sec; // on calcule le delta final en ajoutant à l'ancienne valeur la valeur courante
if (final_delta_sec < 3600000) // Si delta secondes final est inférieur à la durée d'utilisation de la buse
{
// alors on enregistre en memoire la duree d'utilisation du stylo
EEPROM_writeAnything(adresse_eeprom_compteur, final_delta_sec);
delay(5); // ça prends 3,3 ms d'écrire dans l'eeprom donc on attend 5ms pour etre sur d'avoir les valeurs
}
else // sinon
{
// on allume la led de suivi pour dire qu'on doit changer la buse
digitalWrite(LED_CHANGER_BUSE,HIGH);
Serial.println("BUSE A CHANGER!");
// on met l'état de la variable de changement de buse à FALSE
// qui ne changera pas tant qu'on aura pas appuyé sur le bouton "buse changée"
buse_changee = false;
}
}
// sauvegarde
//EEPROM_writeAnything(adresse_epromfinal,resultfinal);
// EEPROM.write(adresse_epromfinal, resultfinal);
// delay(200); // 1 sec
// Lecture
/* valuefinal = EEPROM_readAnything(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;
}
}
}
Il faut j'enlève encore plein de chose. En tout qu'a merci beaucoup pour ce code !!