Horloge Arduino

De Wikidebrouillard.

Article incomplet en cours de rédaction
La vidéo "Horloge Arduino"

Sommaire

Présentation du projet Arduino

On veut utiliser l'heure du jour (heures, minutes et secondes) dans un sketch, et on ne souhaite pas se connecter à un matériel externe.

Liste du matériel

réalisation du projet

  • Allumer l'ordinateur
  • Brancher la carte Arduino à l'aide du câble USB.
  • Télécharger la bibliothèque Time disponible à cette adresse : Time
  • Extraire l'archive dans C:\Program Files\Arduino\libraries
  • Lancer le logiciel Arduino. Vous devez voir s'afficher la fenêtre suivante:

  • Copier/Coller le code fourni ci-dessous
  • Cliquer sur téléverser (en haut à gauche de la fenêtre)
  • Ouvrir le moniteur série (en haut à droite de la fenêtre)
  • Vous pouvez désormais régler la date et l'heure via les boutons poussoirs

Schéma Fritzing

Code



#include <Time.h> // On inclut la bibliothèque qui permet de faire fonctionner l'horloge </font>

const int btnForward = 2;  // Bouton pour avancer le temps
const int btnBack = 3;  // Bouton pour reculer le temps
unsigned long prevtime;  // Variable qui stock le temps

void setup()  {
  digitalWrite(btnForward, HIGH); // Active les résistances de pull-up internes
  digitalWrite(btnBack, HIGH);  // Active les résistance de pull-up internes
  setTime(12,00,0,10,1,2014);  // On fixe le temps de départ à 12h00 le 10 janvier 2014
  Serial.begin(9600);    // Initialise la connexion usb
  Serial.println("Pret");  // On affiche pret dans le "Moniteur série"
}

/*
*  Fonction qui permet de rafraichir l'heure
*/


void loop(){    
  prevtime = now(); //note l'heure
  while(prevtime == now()){  
     // tant que le temps stocké est identique au temps présent
     if(checkSetTime())
      prevtime = now();
  }
  digitalClockDisplay(); // On affiche l'heure
}

/*
*  Fonction qui vérifie que le temps est preset
*/
boolean checkSetTime(){
   // Initialisation des variables
   int step;
   boolean isTimeAdjusted = false;
   step = 1;
   // Tant que le bouton qui permet d'avancer le temps est appuyé
   while(digitalRead(btnForward) == LOW){
     Serial.print("Avance le temps \n");
      // On avance le temps
      adjustTime(step);
      isTimeAdjusted = true;
      step = step + 1;  // On augmente le pas
      digitalClockDisplay();  // On affiche l'heure
      delay(100);  //on  met un délai de 100 ms
   } 
   step = -1;  // On initialise le pas
   // Tant que le bouton qui permet de reculer le temps est avancé ...
   while(digitalRead(btnBack) == LOW)
   {
      Serial.print("Recule le temps \n");
      adjustTime(step);  //on recule le temps
      isTimeAdjusted = true;
      step = step - 1;  //on diminue le pas
      digitalClockDisplay();  //on affiche l'heure
      delay(100);  //on met un delai de 100 ms
   }
   return isTimeAdjusted;
}

/**
* Fonction qui affiche l'heure
**/
void digitalClockDisplay(){
  // On affiche l'heure
  Serial.print(hour());
  // On affiche les minutes
  printDigits(minute());
  // On affiche les secondes
  printDigits(second());
  Serial.print(" ");
  // On affiche le jour
  Serial.print(day());
  Serial.print(" ");
  // On affiche le mois
  Serial.print(month());
  Serial.print(" ");
  // On affiche l'année
  Serial.print(year());
  // On passe à la ligne 
  Serial.println(); 
}

/**
*  Fonction qui permet de rajouter un 0 si le nombre est inférieur à 10
**/
void printDigits(int digits){
  Serial.print(":");
  // Si le nombre est inférieur à 10, on rajoute un 0
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

Explication

Le code permet d'afficher l'heure. La boucle dans le code permet de rafraichir l'heure toutes les secondes. Le code gère les entrées 2 et 3 de l'arduino. Ces sorties correspondent aux boutons poussoirs.Pour que le code comprenne qu'on veut avancer(ou reculer) l'heure, il faut appuyer sur le bouton correspondant à l'action voulue. Ainsi lorsqu'on appuie sur celui-là, on laisse passer le courant électrique et on envoie alors une information. Cette information est interprétée par le code comme étant l'action d'avancer(ou de reculer) l'heure. Si le bouton poussoir est maintenu enfoncé alors l'information sera envoyée en continu.

Liens avec d'autres projets arduino

chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino

Pour aller plus loin

Il est possible d'afficher cette heure sur un écran lcd afin de visualiser directement l'heure actuelle.

Liens avec le quotidien

Cet article peut vous permettre de comprendre le fonctionnement d'une horloge numérique.

Portail des ExplorateursWikidébrouillardLéon DitFLOGPhoto mystèreJ'ai FaitPortraitsAnnuaire
AR
CO

Horloge Arduino

Rechercher

Page Discussion Historique
Powered by MediaWiki
Creative Commons - Paternite Partage a l

© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique