Bonjour à tous,
Aujourd'hui nous allons voir comment utiliser le module RTC DS1307 disponible sur la boutique Robot Maker.
Pour ce tuto nous allons également utiliser : (d'autres composants intéressants sont également disponible sur la boutique, n'hésite pas à y faire un tour ! )
Présentation
Tout d'abord, qu'est ce qu'un module RTC ?
RTC signifie Real Time Clock soit en français horloge temps réel.
OK, donc je peux l'accrocher dans mon salon ? Pas vraiment
En fait ce module, une fois configuré, compte le temps qui passe et ce, de façon autonome et précise grâce à sa pile s'il n'est pas branché.
Et du coup à quoi ça sert, c'est pas une pendule et on peut déjà compter le temps avec une arduino par exemple ?
Avec ce module on peut faire des montages qui agissent en fonction du temps réel, par exemple allumer les lampes à 18h, ou le grille pain à 6h mais aussi en fonction du jour, mois, ... en effet il connait la date et l'heure réelle.
Son avantage réside dans le fait qu'en cas de coupure d'alimentation il continue de compter, et aucune instruction ne risque de le ralentir, à l'inverse d'une arduino ou, dans ce cas, il y aurai une dérive de temps.
Il se pilote via un bus I2C, ce qui le rend facile d'utilisation avec justement une arduino.
Quelques photos de notre star du jour :
Le montage
Le schéma :
(dans le schéma, le module n'est pas du même fabricant, mais les connections sont les même)
En vrai :
Le montage est simple grâce à l'I2C ; il faut connecter les broches SDA des 2 modules sur la broche A4 de l'arduino et les broches SCL sur la broche A5 , les broches VCC au 5V et GND au GND
Attention pour une utilisation avec une arduino par exemple il faudra utiliser un convertisseur de tension (ce point sera peut-être aborder plus tard)
C'est cool tout est branché et maintenant ?
La programmation
Voici le code avec les commentaires qui suffisent à eux même :
une petite vidéo :
N'hésite pas à laisser un commentaire.
Aujourd'hui nous allons voir comment utiliser le module RTC DS1307 disponible sur la boutique Robot Maker.
Pour ce tuto nous allons également utiliser : (d'autres composants intéressants sont également disponible sur la boutique, n'hésite pas à y faire un tour ! )
Présentation
Tout d'abord, qu'est ce qu'un module RTC ?
RTC signifie Real Time Clock soit en français horloge temps réel.
OK, donc je peux l'accrocher dans mon salon ? Pas vraiment
En fait ce module, une fois configuré, compte le temps qui passe et ce, de façon autonome et précise grâce à sa pile s'il n'est pas branché.
Et du coup à quoi ça sert, c'est pas une pendule et on peut déjà compter le temps avec une arduino par exemple ?
Avec ce module on peut faire des montages qui agissent en fonction du temps réel, par exemple allumer les lampes à 18h, ou le grille pain à 6h mais aussi en fonction du jour, mois, ... en effet il connait la date et l'heure réelle.
Son avantage réside dans le fait qu'en cas de coupure d'alimentation il continue de compter, et aucune instruction ne risque de le ralentir, à l'inverse d'une arduino ou, dans ce cas, il y aurai une dérive de temps.
Il se pilote via un bus I2C, ce qui le rend facile d'utilisation avec justement une arduino.
Quelques photos de notre star du jour :
Le montage
Le schéma :
(dans le schéma, le module n'est pas du même fabricant, mais les connections sont les même)
En vrai :
Le montage est simple grâce à l'I2C ; il faut connecter les broches SDA des 2 modules sur la broche A4 de l'arduino et les broches SCL sur la broche A5 , les broches VCC au 5V et GND au GND
Attention pour une utilisation avec une arduino par exemple il faudra utiliser un convertisseur de tension (ce point sera peut-être aborder plus tard)
C'est cool tout est branché et maintenant ?
La programmation
Voici le code avec les commentaires qui suffisent à eux même :
#include <Wire.h> // Bibliothèque pour l'I2C #include "RTClib.h" // Bibliothèque pour le module RTC #include <LiquidCrystal_I2C.h> // Bibliothèque pour l'écran RTC_DS1307 RTC; // Instance du module RTC de type DS1307 LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); ////Instance d'écran void setup(void) { //Initialisation de l'éran lcd.begin(16,2); lcd.clear(); lcd.backlight(); lcd.setCursor(0, 0); lcd.setCursor(0, 1); // Initialise la liaison I2C Wire.begin(); // Initialise le module RTC RTC.begin(); //Initialise la date et le jour au moment de la compilation // /!\ /!\ Les lignes qui suivent sert à définir la date et l'heure afin de régler le module, // pour les montages suivant il ne faut surtout PAS la mettre, sans à chaque démarrage // le module se réinitialisera à la date et heure de compilation DateTime dt = DateTime(__DATE__, __TIME__); RTC.adjust(dt); // /!\ //////////////////////////////////////////////////////////////////////////////////////////// } void loop(){ DateTime now=RTC.now(); //Récupère l'heure et le date courante affiche_date_heure(now); //Converti la date en langue humaine delay(1000); // delais de 1 seconde } //Converti le numéro de jour en jour /!\ la semaine commence un dimanche String donne_jour_semaine(uint8_t j){ switch(j){ case 0: return "DIM"; case 1: return "LUN"; case 2: return "MAR"; case 3: return "MER"; case 4: return "JEU"; case 5: return "VEN"; case 6: return "SAM"; default: return " "; } } // affiche la date et l'heure sur l'écran void affiche_date_heure(DateTime datetime){ // Date String jour = donne_jour_semaine(datetime.dayOfWeek()) + " " + Vers2Chiffres(datetime.day())+ "/" + Vers2Chiffres(datetime.month())+ "/" + String(datetime.year(),DEC); // heure String heure = ""; heure = Vers2Chiffres(datetime.hour())+ ":" + Vers2Chiffres(datetime.minute())+ ":" + Vers2Chiffres(datetime.second()); //affichage sur l'écran lcd.clear(); lcd.setCursor(0, 0); lcd.print(jour); lcd.setCursor(0, 1); lcd.print(heure); } //permet d'afficher les nombres sur deux chiffres String Vers2Chiffres(byte nombre) { String resultat = ""; if(nombre < 10) resultat = "0"; return resultat += String(nombre,DEC); }J'ai joins le fichier de code ainsi que les librairies pour le module RTC et LCD.
une petite vidéo :
N'hésite pas à laisser un commentaire.