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
Click to rate this post!
[Total: 3 Average: 4.7]

3 réflexions sur “Projet horloge simple avec Arduino sans RTC | GPS V1”

Laisser un commentaire

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

Retour en haut

You have successfully subscribed to the newsletter

There was an error while trying to send your request. Please try again.

FPGA | Arduino | Matlab | Cours will use the information you provide on this form to be in touch with you and to provide updates and marketing.