Stylo 3D

Oui j'ai bien réecris sur une feuille les différentes étapes pour que ce soit clair.

J'ai remplacé par mes fonctions surtout le branchement des leds que je fais avec une tinkerkit.
Sa marche correctement(enfin presque) sauf qu'il ne compte plus le temps, les temps t1 et t2 sont les mèmes et la "fin d'enregistrement s'affiche" alors que je n'ai même pas appuyer une seconde fois sur le bouton.

//#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
const int BOUTON_ENREGISTREMENT = A3;
const int BOUTON_CHANGER_BUSE = A4;
const int LED_ENREGISTREMENT = 1;
const int LED_CHANGER_BUSE = 03;

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
  pinMode(BOUTON_ENREGISTREMENT,INPUT);
  pinMode(BOUTON_CHANGER_BUSE,INPUT);
  pinMode(LED_ENREGISTREMENT,OUTPUT);
  pinMode(LED_CHANGER_BUSE,OUTPUT);
  
   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);
  delay(1000);
  }
}
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
  }

  // 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
         delay(1000);
       }
       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);
        delay(1000);
         // 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;
  }
}

Si j'enlève mes delay tout s'affiche à la suite... c'est trop rapide.

Voila ce que ça m'affiche :