(→Code) |
(→Pour aller plus loin) |
||
(13 versions intermédiaires masquées) | |||
Ligne 1 : | Ligne 1 : | ||
{{avertissement}} | {{avertissement}} | ||
- | {{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/ | + | {{vidéo|numérovidéo = <videoflash type="mediaspip" num ="1">http://mediaspip.ptitdeb.infini.fr/IMG/flv/horlogearduino-encoded.flv|400|300</videoflash>}} |
==Présentation du projet Arduino== | ==Présentation du projet Arduino== | ||
Ligne 15 : | Ligne 15 : | ||
==réalisation du projet== | ==réalisation du projet== | ||
- | + | ||
* Allumer l'ordinateur | * Allumer l'ordinateur | ||
* Brancher la carte Arduino à l'aide du câble USB. | * Brancher la carte Arduino à l'aide du câble USB. | ||
+ | |||
+ | * Télécharger la bibliothèque Time disponible à cette adresse : [http://playground.arduino.cc/uploads/Code/Time.zip Time] | ||
+ | |||
+ | * Extraire l'archive dans C:\Program Files\Arduino\libraries | ||
* Lancer le logiciel Arduino. Vous devez voir s'afficher la fenêtre suivante: | * Lancer le logiciel Arduino. Vous devez voir s'afficher la fenêtre suivante: | ||
Ligne 25 : | Ligne 29 : | ||
[[Fichier:captSimon1.png|180px]] | [[Fichier:captSimon1.png|180px]] | ||
- | * | + | * 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=== | ===Schéma Fritzing=== | ||
- | [[Image:untitled_sketch_2_bb.jpg|500px]] | + | [[Image:untitled_sketch_2_bb-3.jpg|500px]] |
===Code=== | ===Code=== | ||
Ligne 37 : | Ligne 45 : | ||
- | #include <Time.h> // On inclut la bibliothèque qui permet de faire fonctionner l'horloge | + | #include <Time.h> // On inclut la bibliothèque qui permet de faire fonctionner l'horloge </font> |
- | const int btnForward = 2; // | + | const int btnForward = 2; // Bouton pour avancer le temps |
- | const int btnBack = 3; // | + | const int btnBack = 3; // Bouton pour reculer le temps |
- | unsigned long prevtime; // | + | unsigned long prevtime; // Variable qui stock le temps |
void setup() { | void setup() { | ||
- | digitalWrite(btnForward, HIGH); // | + | digitalWrite(btnForward, HIGH); // Active les résistances de pull-up internes |
- | digitalWrite(btnBack, HIGH); // | + | digitalWrite(btnBack, HIGH); // Active les résistance de pull-up internes |
- | setTime(12,00,0,10,1,2014); // | + | setTime(12,00,0,10,1,2014); // On fixe le temps de départ à 12h00 le 10 janvier 2014 |
- | Serial.begin(9600); // | + | Serial.begin(9600); // Initialise la connexion usb |
- | Serial.println("Pret"); // | + | Serial.println("Pret"); // On affiche pret dans le "Moniteur série" |
} | } | ||
Ligne 54 : | Ligne 62 : | ||
* Fonction qui permet de rafraichir l'heure | * Fonction qui permet de rafraichir l'heure | ||
*/ | */ | ||
+ | |||
+ | |||
void loop(){ | void loop(){ | ||
prevtime = now(); //note l'heure | prevtime = now(); //note l'heure | ||
while(prevtime == now()){ | while(prevtime == now()){ | ||
- | //tant que le temps stocké est identique au temps présent | + | // tant que le temps stocké est identique au temps présent |
if(checkSetTime()) | if(checkSetTime()) | ||
prevtime = now(); | prevtime = now(); | ||
} | } | ||
- | digitalClockDisplay(); // | + | digitalClockDisplay(); // On affiche l'heure |
} | } | ||
/* | /* | ||
- | * Fonction qui vérifie que le temps est | + | * Fonction qui vérifie que le temps est preset |
*/ | */ | ||
boolean checkSetTime(){ | boolean checkSetTime(){ | ||
- | // | + | // Initialisation des variables |
int step; | int step; | ||
boolean isTimeAdjusted = false; | boolean isTimeAdjusted = false; | ||
step = 1; | step = 1; | ||
- | //Tant que le bouton qui permet d'avancer le temps est appuyé | + | // Tant que le bouton qui permet d'avancer le temps est appuyé |
while(digitalRead(btnForward) == LOW){ | while(digitalRead(btnForward) == LOW){ | ||
Serial.print("Avance le temps \n"); | Serial.print("Avance le temps \n"); | ||
- | // | + | // On avance le temps |
adjustTime(step); | adjustTime(step); | ||
isTimeAdjusted = true; | isTimeAdjusted = true; | ||
- | step = step + 1; // | + | step = step + 1; // On augmente le pas |
- | digitalClockDisplay(); // | + | digitalClockDisplay(); // On affiche l'heure |
delay(100); //on met un délai de 100 ms | delay(100); //on met un délai de 100 ms | ||
} | } | ||
- | step = -1; // | + | step = -1; // On initialise le pas |
- | //Tant que le bouton qui permet de reculer le temps est avancé ... | + | // Tant que le bouton qui permet de reculer le temps est avancé ... |
while(digitalRead(btnBack) == LOW) | while(digitalRead(btnBack) == LOW) | ||
{ | { | ||
Ligne 100 : | Ligne 110 : | ||
**/ | **/ | ||
void digitalClockDisplay(){ | void digitalClockDisplay(){ | ||
- | // | + | // On affiche l'heure |
Serial.print(hour()); | Serial.print(hour()); | ||
- | // | + | // On affiche les minutes |
printDigits(minute()); | printDigits(minute()); | ||
- | // | + | // On affiche les secondes |
printDigits(second()); | printDigits(second()); | ||
Serial.print(" "); | Serial.print(" "); | ||
- | // | + | // On affiche le jour |
Serial.print(day()); | Serial.print(day()); | ||
Serial.print(" "); | Serial.print(" "); | ||
- | // | + | // On affiche le mois |
Serial.print(month()); | Serial.print(month()); | ||
Serial.print(" "); | Serial.print(" "); | ||
- | // | + | // On affiche l'année |
Serial.print(year()); | Serial.print(year()); | ||
- | // | + | // On passe à la ligne |
Serial.println(); | Serial.println(); | ||
} | } | ||
Ligne 124 : | Ligne 134 : | ||
void printDigits(int digits){ | void printDigits(int digits){ | ||
Serial.print(":"); | Serial.print(":"); | ||
- | // | + | // Si le nombre est inférieur à 10, on rajoute un 0 |
if(digits < 10) | if(digits < 10) | ||
Serial.print('0'); | Serial.print('0'); | ||
Ligne 133 : | Ligne 143 : | ||
===Explication=== | ===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== | ==Liens avec d'autres projets arduino== | ||
Ligne 138 : | Ligne 151 : | ||
==Pour aller plus loin== | ==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== | ==Liens avec le quotidien== | ||
- | + | Cet article peut vous permettre de comprendre le fonctionnement d'une horloge numérique. | |
[[Catégorie:Arduino]] | [[Catégorie:Arduino]] |
Sommaire |
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.
#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); }
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.
chercher ici : http://wikidebrouillard.org/index.php/Catégorie:Arduino
Il est possible d'afficher cette heure sur un écran lcd afin de visualiser directement l'heure actuelle.
Cet article peut vous permettre de comprendre le fonctionnement d'une horloge numérique.
© Graphisme : Les Petits Débrouillards Grand Ouest (Patrice Guinche - Jessica Romero) | Développement web : Libre Informatique