Modifications

Sauter à la navigation Sauter à la recherche
1 435 octets ajoutés ,  22 janvier 2013 à 12:34
Ligne 172 : Ligne 172 :  
C'est exactement ce qui à été fait dans l'exemple précédent lorsque nous avons exécuté les lignes suivantes:
 
C'est exactement ce qui à été fait dans l'exemple précédent lorsque nous avons exécuté les lignes suivantes:
   −
  <nowiki></nowiki>
+
  <nowiki>   DateTime now = RTC.now(); // Faire un copie 'figée' de l'heure du RTC
 +
   
 +
    Serial.print(now.year(), DEC);  // Affichage ANNEE - extraire l'information de la copie figée
 +
    Serial.print('/');
 +
    Serial.print(now.month(), DEC);  // Affichage MOIS - extraire l'information de la copie figée
 +
    Serial.print('/');</nowiki>
    
Cela représente un peu plus d'effort mais cela nous met également à l'abri des erreurs :-) !
 
Cela représente un peu plus d'effort mais cela nous met également à l'abri des erreurs :-) !
   −
We can also get a 'timestamp' out of the DateTime object by calling '''get''' which counts the number of seconds (not counting leapseconds) since midnight, January 1st 2000
+
== Timestamp ==
 +
"Timestamp" est un terme fort répandu en informatique... nous le traduirions par "Horodatage".
   −
  <nowiki>    Serial.print(" since 2000 = ");
+
Dans le monde informatique, 'TimeStamp' à surtout la particularité d'avoir une valeur unique (de préférence sous forme de valeur numerique) à/pour chaque instant.
 +
 
 +
Il est également possible d'obtenir un 'TimeStamp' depuis l'objet DateTime en appelant la fonction '''get'''. '''Get''' retourne le nombre de '''secondes''' écoulées (en totalité) depuis le premier janvier 2000 à minuit.
 +
 
 +
  <nowiki>    Serial.print(" depuis 1 jan. 2000 = ");
 
     Serial.print(now.get());
 
     Serial.print(now.get());
     Serial.print("s = ");
+
     Serial.print("secondes = ");
 
     Serial.print(now.get() / 86400L);
 
     Serial.print(now.get() / 86400L);
     Serial.println("d");</nowiki>
+
     Serial.println(" jours");</nowiki>
 +
 
 +
=== Evaluer le temps qui passe ===
 +
 
 +
Puisqu'il y a 60*60*24 = 86400 secondes dans un jours, nous pouvons facilement compter le nombre de jours (aussi).
 +
 
 +
Cela peut être particulièrement utile pour savoir combien de temps a passé:
 +
* entre les deux fois où un événement particulier s'est produit.
 +
* depuis la dernière fois que le avons interrogé un capteur (ou sous-système).
 +
 
 +
Rendant les chose plus facile dans de nombreux cas.
 +
 
 +
Par exemple, pour savoir si 5 minutes sont passées, il suffit d'attendre que la différence entre l'appel initial de '''get()''' et notre appel de vérification soit soit plus grand de 300 (=5 min * 60 secondes)... même pas besoin de vérifier les changements d'heures.
 +
 
 +
<nowiki>// Attendre 5 minutes pour envoyer un message.
 +
// Comme loop est exécuté constamment, le message sera envoyé toutes les 5 minutes
 +
function loop() {
 +
  DateTime depart = RTC.now();
 +
  DateTime maintenant = RTC.now();
 +
  while( (maintenant.get() - depart.get()) < 300 ) {
 +
    maintenant = RTC.now(); // Re-capturer l'heure
 +
  }
 +
  Serial.println( "5 minutes viennent de passer" );
 +
}       
   −
Since there are 60*60*24 = 86400 seconds in a day, we can easily count days since then as well. This might be useful when you want to keep track of how much time has passed since the last query, making some math a lot easier (like checking if its been 5 minutes later, just see if '''get()''' has increased by 300, you dont have to worry about hour changes)
      
{{ADF-RTC-DS1307-TRAILER}}
 
{{ADF-RTC-DS1307-TRAILER}}
29 838

modifications

Menu de navigation