
Objectifs
- Savoir programmer une horloge numérique
 
- Savoir accélérer ou ralentir l’horloge
 
- Savoir utiliser des nouvelles fonctions
 
- Limitations de la technique
 
Applications
- Horloge numérique
 
- Actions temporisées
 
- Ordonnancement des tâches & la gestion du temps
 
- Etc.
 
Exemple 1
Lecture de l’horloge interne en ms
   Temps_ms=millis();  // 2^32 milli-secondes = 49.71 jours 
  
  
Calcul des secondes
   Num_sec= (Temps_ms/TSec)%60;
  
  
 Calcul des minutes
   Num_min= (Temps_ms/(TSec*60))%60;
  
  
Calcul des heures
   Num_heur= (Temps_ms/(TSec*3600))%60;
  
  
Calcul des  jours
   Num_jour= (Temps_ms/(TSec*86400)); //3600*24=86400
  
  
Affichage de l’horloge
   Serial.print(Num_jour);Serial.print(":");
  Serial.print(Num_heur);Serial.print(":");
  Serial.print(Num_min);Serial.print(":");
  Serial.println(Num_sec); 
  
  
 
 const unsigned long TSec=1000;
unsigned long Num_ms, Num_sec,Num_min; 
unsigned long Num_heur,Num_jour, Temps_ms; 
void setup()
{
  // Init du port série 
  Serial.begin(9600); 
}
void loop()
{
  // Lecture de l'horloge interne en ms
  Temps_ms=millis();  // 2^32 secondes = 49.71 jours  
  // Calcul des secondes  
  Num_sec= (Temps_ms/TSec)%60;
 
  // Calcul des minutes  
  Num_min= (Temps_ms/(TSec*60))%60;
  // Calcul des heures  
  Num_heur= (Temps_ms/(TSec*3600))%60;
  // Calcul des  jours  
  Num_jour= (Temps_ms/(TSec*86400)); //3600*24=86400
  
  // Affichage de l'horloge 
  Serial.print(Num_jour);Serial.print(":");
  Serial.print(Num_heur);Serial.print(":");
  Serial.print(Num_min);Serial.print(":");
  Serial.println(Num_sec);  
}
  
  
Exemple 2
 unsigned long Num_ms, Num_sec,Num_min;
unsigned long Num_heur,Num_jour, Temps_ms;
unsigned long Clock[4];
  // Clock[0]   Jours
  // Clock[1]   Heures
  // Clock[2]   Minutes
  // Clock[3]   Secondes
void setup()
{
  // Init du port série
  Serial.begin(9600);
}
void loop()
{
  // Lecture de l'horloge 
  getClock(Clock,10);
  // Affichage
  dispClock(Clock);
  // Attente 1s
  delay(1000);
}
void getClock(unsigned long *hologe, unsigned char Speed)
{
  const unsigned long TSec1=1000;
  // Lecture de l'horloge interne en ms
  Temps_ms=Speed*millis();
  // Calcul des secondes 
  hologe[0]= (Temps_ms/TSec1)%60;
  // Calcul des minutes 
  hologe[1]= (Temps_ms/(TSec1*60))%60;
  // Calcul des heures 
  hologe[2]= (Temps_ms/(TSec1*3600))%60;
  // Calcul des jours 
  hologe[3]= (Temps_ms/(TSec1*86400)); //3600*24=86400
}
void dispClock(unsigned long *Clock)
{
  Serial.print(Clock[3]);Serial.print(":");
  Serial.print(Clock[2]);Serial.print(":");
  Serial.print(Clock[1]);Serial.print(":");
  Serial.println(Clock[0]);
}
  
  
Limitations
- Non synchrone (Il faut régler l’heure manuellement)
 
- Perte d’horloge en cas d’initialisation de la carte (faible alimentation, etc.)
 
- Horloge limitée à 49.71 jours (ce n’est pas un soucis si HH:MM:SS )
 
Sujets connexes
- programme horloge arduino lcd
 
- horloge arduino sans rtc
 
- horloge arduino ds3231
 
- ds1307 arduino
 
- ds3231 arduino
 
- programmateur horaire arduino
 
- arduino horloge programmable
 
- rtc arduino
 
		 
	
3 réponses sur « Projet horloge simple avec Arduino sans RTC | GPS V1 »
merci
Avec plaisir!
Drone solaire longue distance & autonomie infinie!