SIK Experiment Guide for the Arduino 101/Genuino 101 Board (French)
This Tutorial is Retired!
This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.
Expérience 20 : Utiliser l'horloge en temps réel (RTC) embarquée
Introduction
Les microcontrôleurs ont leur propre notion du temps, qui correspond à leur temps d'exécution. Ils fonctionnent sur un signal d'horloge interne qui permet de connaître le nombre de millisecondes et de microsecondes qui se sont écoulées depuis leur mise sous tension. Mais les microcontrôleurs n'ont aucun moyen de connaître le temps réel, celui sur lequel nous basons toutes nos journées et notre emploi du temps.
Dans cette expérience, vous règlerez l'horloge puis afficherez la date et l'heure sur l'écran LCD que vous avez appris à utiliser à l'expérience 17.
Note : La carte 101 ne dispose pas de batterie de secours pour la RTC (horloge en temps réel). Si vous débranchez la carte ou si vos batteries se déchargent, vous devrez réinitialiser la RTC dans le code ou développer un circuit pour régler l'heure.
Composants nécessaires
Vous aurez besoin des composants suivants :
- 1 plaque Breadboard
- 1 carte Arduino 101 ou Genuino 101
- 1 potentiomètre
- 1 écran LCD 3,3 V
- 16 cavaliers
Vous n'avez pas le SIK ?
Pour réaliser cette expérience sans le SIK, nous vous suggérons d'utiliser les composants suivants :
Vous aurez également besoin d'une carte Arduino 101 ou Genuino 101.
Lectures suggérées
Avant de poursuivre cette expérience, nous vous recommandons de vous familiariser avec les concepts des tutoriels suivants :
Présentation de l'horloge en temps réel (RTC)
Les microcontrôleurs parviennent parfaitement à suivre leur temps d'exécution, c'est-à-dire le temps qu'il lui faut pour réaliser leur tâche. Ils indiquent généralement le nombre de millisecondes qui se sont écoulées depuis qu'ils ont été mis sous tension. En revanche, ils ne parviennent pas à suivre le temps sur lequel, nous humains, fonctionnons (« temps réel »). Les microcontrôleurs utilisent une horloge en temps réel (RTC) pour surveiller un début défini et le temps qui avance.
La RTC conserve les heures, minutes et secondes, ainsi que le jour, le mois et l'année. Sur la carte 101, vous devez régler la date et l'heure quand vous la mettez sous tension pour la première fois. L'heure devrait ensuite être précise. Vous pouvez ensuite utiliser l'heure pour déclencher des événements à une heure ou un jour spécifique, ou même pour horodater des données consignées.
Note : Si la carte 101 n'est plus alimentée, vous devez réinitialiser l'horloge dans votre code. De plus, la RTC est un composant embarqué de la carte 101 et ne requiert donc aucun câblage supplémentaire.
Branchement du matériel
Vous êtes prêt à tout raccorder ? Consultez le schéma de câblage ci-dessous pour savoir comment faire.
Composants polarisés | Faites particulièrement attention aux marquages indiquant comment placer les composants sur la plaque breadboard, car les composants polarisés ne peuvent être connectés à un circuit que dans une direction. |
Schéma de câblage de l'expérience
Ouverture du sketch
Ouvrez l'EDI Arduino sur votre ordinateur. Le codage en langage Arduino contrôlera votre circuit. Ouvrez le code du Circuit 20 en accédant au « Code du guide SIK 100 » que vous avez précédemment téléchargé et placé dans votre dossier « Examples ».
Pour ouvrir le code, cliquez sur : File > Examples > 101 SIK Guide Code > Circuit_20
Vous pouvez également copier et coller le code suivant dans l'EDI Arduino. Cliquez sur Télécharger et observez ce qu'il se passe.
language:cpp
/*
SparkFun Inventor's Kit
Example sketch 20
DISPLAYING THE DATE AND TIME
This sketch reads the RTC data and prints it on the LCD screen
This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.
*/
//include the CurieTime Library
#include
#include
//instantiate the lcd
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
//start lcd at 16 x 2
lcd.begin(16, 2);
//clear the lcd
lcd.clear();
//set time to 1:35:24 on April 4th, 2016\. Please change to your time / date
setTime(1, 35, 24, 4, 10, 2016);
}
void loop()
{
//create a character array of 16 characters for the time
char clockTime[16];
//use sprintf to create a time string of the hour, minte and seconds
sprintf(clockTime, " %2d:%2d:%2d ", hour(), minute(), second());
//create a character array of 15 characters for the date
char dateTime[16];
//use sprintf to create a date string from month, day and year
sprintf(dateTime, " %2d/%2d/%4d ", month(), day(), year());
//set cursor to column 0, row 0
lcd.setCursor(0, 0);
//print the date string over lcd
lcd.print(dateTime);
//set cursor to column 0, row 1
lcd.setCursor(0, 1);
//print the time string over lcd
lcd.print(clockTime);
}
À propos du code
setTime(1,35,00,4,10,2016);
La RTC sur la carte 101 doit être réglée à l'aide de la fonction setTime() quand vous la mettez sous tension. Les 6 paramètres setTime() indiquent dans l'ordre : heures, minutes, secondes, mois, jour, année. Si, pour une raison quelconque, votre carte 101 n'est plus alimentée, vous devez la réinitialiser en utilisant cette fonction.
sprintf(dateTime, " %2d/%2d/%4d ", month(), day(), year());
La fonction sprintf() permet de créer facilement des chaînes en prenant des données et en les plaçant dans un tableau de caractères (une chaîne dans Arduino). Les indications %2d et %4d montrent l'emplacement où les données sont insérées avec le nombre de chiffres (%4d indique donc 4 chiffres). Enfin, vous transmettez les données que vous voulez insérer dans la chaîne sous forme de paramètres. Dans ce cas : month(), day(), and year().
Ce que vous devez voir
Une fois le code complètement téléchargé, vous devez voir deux lignes de texte sur votre écran LCD. La première ligne doit être la date (qui ne doit changer qu'une fois par jour) et la seconde doit être l'heure actuelle (qui doit augmenter). Si cela ne fonctionne pas, consultez la section Dépannage ci-dessous.
Dépannage
L'écran est vide ou complètement allumé
Réglez le contraste en tournant le potentiomètre. S'il est mal réglé, vous ne pouvez pas lire le texte.
Ne fonctionne pas du tout
Vérifiez le code, en particulier que vous avez inclus la bibliothèque de l'écran LCD.
L'écran n'affiche pas l'heure correcte
Vérifiez votre code. Il faut probablement mettre à jour la fonction setTime().