Stylo 3D

Bonjour;
Je viens re poster de nouveau étant toujours bloqué sur le même problème...

Voici mon programme :

 /*--------------------------------------------------* 
 * Fonction: Librairies *
 *--------------------------------------------------*/
#include "EEPROMAnything.h"
#include <EEPROM.h>
#include <TinkerKit.h>
#include <Wire.h>
#include "DS1307.h"

 /*--------------------------------------------------* 
 * Fonction: Déclaration des variables *
 *--------------------------------------------------*/

#define BOUTON_ENREGISTREMENT 7    // bouton poussoir pour démarrer et arreter l'enregistrement
#define BOUTON_CHANGER_BUSE 10     // bouton poussoir pour dire qu'on a changé la buse (sinon la led reste allumée) et on n'enregistre rien
#define LED_CHANGER_BUSE   14      // led qui s'allume dès qu'on doit changer la buse


boolean buse_changee = true; 
double SEC;
int buttonState = 0;
double result1; 
double result2;
int comptage=0;
unsigned int resultfinal;   
double current_sec = 0;
double starting_sec = 0;
double final_sec = 0;
double current_delta_sec = 0;
int test;
double final_delta_sec; 

#define adr_eprom_test 200                
#define adresse_eeprom_compteur 0  
DS1307 clock;//define a object of DS1307 class
const unsigned long DISPLAY_INTERVAL = 1000; // en ms
static unsigned long lastTime=0;  // en ms
unsigned long time=millis();      // en ms


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_CHANGER_BUSE,OUTPUT);
  
 /*--------------------------------------------------* 
 *Test pour le premier lancement avec une EEPROM vide*
 *--------------------------------------------------*/ 
  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);
  }
   // affiche l'heure courante avant de démarrer

  
   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
  }
  enregistrement_temps();
  changement_buse();
  } 
 /*--------------------------------------------------* 
 * 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); 
    }
  


/*--------------------------------------------------* 
 *Fonction : Enregistrement du temps d'utilisation*
 *--------------------------------------------------*/       
void enregistrement_temps()
{
 // DEBUT ENREGISTREMENT
  // détecte appui sur bouton d'enregistrement et commence le décompte
  if (digitalRead(BOUTON_ENREGISTREMENT)==HIGH) 
  // 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);
       }
       if (comptage==2) // 2nd give final status and storage
       {
        // 1/3
        // 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)+3599990; 
        Serial.print("delta temps t2-t1=");
        Serial.println(current_delta_sec);
        
         // 2/3
        // stockage de la fin dans l'eeprom
        backup_eeprom();
        
        // 3/3
        // réinitialisation du bouton        
        comptage=0; // reset comptage
        Serial.print("temps total d'utilisation du stylo:");
        Serial.println(final_delta_sec);
        
      
       }
 }// FIN ENREGISTREMENT
 }
 

/*--------------------------------------------------* 
 *Fonction : Changement de la buse => Maitenance*
 *--------------------------------------------------*/   
  void changement_buse()
  
  {
   // DEBUT CHANGEMENT BUSE
   // Détecte si appui sur le bouton de changement de buse
   if (digitalRead(BOUTON_CHANGER_BUSE)==HIGH && 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   
  }
  
  /*--------------------------------------------------* 
 *Fonction : Sauvegarde*
 *--------------------------------------------------*/   
  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
  Serial.println("temps totale d'utilisation");
    Serial.println(final_delta_sec, DEC);
  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;
  }
}

Et je repose mon problème :

Je m'explique, le problème viens plus précisément du programme de la RTC (Pour lequel je remercie encore énormément toutes les personnes qui on pu m'aider ici, surtout certain).
Dans ce programme lorsque j'appuie la première fois sur le bouton ça fait une capture de ce temps (que l'on appellera t1) et lorsque que je r appuie ça fait une seconde capture (que l'on nomme t2).
Ensuite le programme fait t2 - t1 pour connaitre le temps totale d'utilisation.

Le problème vient du fait que le programme détecte l'appuie de t1 ou t2 que lorsqu'il viens d'afficher le l'heure sur le moniteur série. Je voudrais qu'on puisse faire l'image de ce temps n'importe quand et pas seulement lorsque l'heure s'affiche, de plus l'utilisateur lui ne verras pas le moniteur série.

j'ai enlevé les delay() en trop comme on me le précisé mais rien n'a changé... pourtant l’enchaînement est le même que celui du programme que l'on m'a donné. Je ne comprends vraiment pas...

je vous remercie d'avance.