
Specification:
Interface: I2C
I2C Address: 0x27
Pin Definition : GND、VCC、SDA、SCL
Back lit (Blue with White char color)
Supply voltage: 5V
PCB Size : 98mm×60mm
Contrast Adjust : Potentiomètre
Reprise du code Arduino sait memoriser l'heureet ajout des lignes pour envoyer l'heure sur le LCD


le code
Code : Tout sélectionner
//Arduino 1.0.5 Tiny RTC I2C et LCD 20x4
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 20 caracteres et 4 lignes ecran
//SCL(jaune) = A5
//SDA(vert) = A4
//Alim en 5V
//Masse
void setup () {
Serial.begin(9600); //Initialiser le port serie
Wire.begin(); //Initialiser la bibliotheque Wire
RTC.begin(); //Initialiser le module RTC
//Verifier si le module RTC fonctionne, sinon nous envoyons Erreur
if (! RTC.isrunning()) {
Serial.println("RTC ne fonctionne pas!");
//Enlever le commentaire de la ligne suivante, pour mettre le module a l'heure du PC
//RTC.adjust(DateTime(__DATE__, __TIME__));
}
lcd.init(); // Initialiser le lcd
lcd.init();
lcd.backlight() ;
lcd.setCursor(1,0);
lcd.print("Jour ="); //position 0,ligne 0
lcd.setCursor(1,1);
lcd.print("Date ="); //position 0,ligne 1
lcd.setCursor(0,2);
lcd.print("Heure ="); //position 0,ligne 2
lcd.setCursor(4,3);
lcd.print("....."); //position 4,ligne 3
}
void loop () {
DateTime now = RTC.now();
if (now.day() < 10){Serial.print("0");}
Serial.print(now.day(), DEC);Serial.print('/'); //Imprimer Jour et barre
if (now.month() < 10){Serial.print("0");}
Serial.print(now.month(), DEC);Serial.print('/'); //Imprimer mois et barre
Serial.print(now.year(), DEC);Serial.print(' '); //Imprimer annee et espace
if (now.hour() < 10){Serial.print("0");}
Serial.print(now.hour(), DEC); Serial.print(':'); //Imprimer heure et :
if (now.minute() < 10){Serial.print("0");}
Serial.print(now.minute(), DEC);Serial.print(':');//Imprimer minute et :
if (now.second() < 10){Serial.print("0");}
Serial.print(now.second(), DEC);Serial.println(); //Imprimer seconde et saut de ligne
delay(5000); //Delay de 5s entre les envoies ecran
EnvoiDate ();
}
void EnvoiDate() {
DateTime now = RTC.now();
lcd.setCursor(8,0); //Envoi LCD Jour
switch (now.dayOfWeek()) {
case 1:
lcd.print("Lundi");
break;
case 2:
lcd.print("Mardi");
break;
case 3:
lcd.print("Mercredi");
break;
case 4:
lcd.print("Jeudi");
break;
case 5:
lcd.print("Vendredi ");
break;
case 6:
lcd.print("Samedi");
break;
case 7:
lcd.print("Dimanche");
break;
}
lcd.setCursor(8,1); //Envoi LCD Jour et barre
if (now.day() < 10){lcd.print("0");} lcd.print(now.day(),DEC); lcd.setCursor(10,1); lcd.print('/');
lcd.setCursor(11,1); //Envoi LCD mois et barre
if (now.month() < 10){lcd.print("0");} lcd.print(now.month(),DEC); lcd.setCursor(13,1); lcd.print('/');
lcd.setCursor(14,1);//Envoi LCD annee
lcd.print(now.year(),DEC);
lcd.setCursor(8,2); //Envoi LCD heure et :
if (now.hour() < 10){lcd.print("0");} lcd.print(now.hour(),DEC); lcd.setCursor(10,2); lcd.print(':');
lcd.setCursor(11,2);//Envoi LCD minute et :
if (now.minute() < 10){lcd.print("0");} lcd.print(now.minute(),DEC); lcd.setCursor(13,2); lcd.print(':');
lcd.setCursor(14,2);//Envoi LCD second
if (now.second() < 10){lcd.print("0");} lcd.print(now.second(),DEC);
}