Projet horloge simple avec Arduino sans RTC | GPS V1

[Total : 0   Moyenne : 0/5]

Projet horloge simple avec Arduino sans RTC GPS V1

Objectifs

  1. Savoir programmer une horloge numérique
  2. Savoir accélérer ou ralentir l’horloge
  3. Savoir utiliser des nouvelles fonctions
  4. Limitations de la technique

Applications

  1. Horloge numérique
  2. Actions temporisées
  3. Ordonnancement des tâches & la gestion du temps
  4. 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

  1. Non synchrone (Il faut régler l’heure manuellement)
  2. Perte d’horloge en cas d’initialisation de la carte (faible alimentation, etc.)
  3. 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

Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Anti-Robot *