Ce module embarque, en plus du composant DS1307, une pile qui permet de sauvegarder l'heure. Cette pile (CR2032) à une durée de vie de plusieurs années.
Pour utiliser ce module on va avoir besoin d'une librairie non fournie avec l'IDE Arduino. Celle-ci peut être téléchargée ici (il suffit de faire "Download Zip" et de décompressé l'archive directement dans le répertoire librairies de l'IDE).
Cette librairie propose un exemple ("ds1307") permettant de mettre à jour le module avec l'heure de votre ordinateur (attention : l'heure utilisée est UTC). Pour cela, il suffit de décommenter la ligne "RTC.adjust(DateTime(__DATE__, __TIME__));".
Tout d'abord le branchement
Le branchement est relativement simple. On se base sur le montage du LCD vu précédemment.Le module RTC DS1307 ce branche comme suit:
- Gnd --> GND
- Vcc --> 5 V
- Sda --> analog pin A4
- Scl --> analog pin A5
Le programme correspondant
/************************************************************
Horloge Arduino
Horloge simple avec un Arduino Duo, un module RTC DS1307
et un afficheur LCD 20x4.
Branchements du RTC DS1307:
Gnd --> GND
Vcc --> 5 V
Sda --> analog pin A4
Scl --> analog pin A5
Branchements de l'afficheur LCD:
rs (LCD pin 4) --> Arduino pin 12
enable (LCD pin 6) --> Arduino pin 10
LCD D4 --> Arduino pin 5
LCD D5 --> Arduino pin 4
LCD D6 --> Arduino pin 3
LCD D7 --> Arduino pin 2
***************************************************************/
#include <liquidcrystal.h>
#include <wire.h>
#include <rtclib.h>
LiquidCrystal lcd(12, 11, 10, 5, 4,3,2);
RTC_DS1307 rtc;
void setup() {
lcd.begin(20,4);
lcd.clear();
Wire.begin();
rtc.begin();
}
void loop(){
DateTime now = rtc.now();
lcd.setCursor(0,0);
lcd.print(now.year());
lcd.print("/");
if (now.month()<10) lcd.print="0";
lcd.print(now.month());
lcd.print("/");
if (now.day()<10) lcd.print="0";
lcd.print(now.day());
lcd.print(" ");
if (now.hour()<10) lcd.print="0";
lcd.print(now.hour());
lcd.print(":");
if (now.minute()<10) lcd.print="0";
lcd.print(now.minute());
lcd.print(":");
if (now.second()<10) lcd.print="0";
lcd.print(now.second());
delay(900);
}
Source : Arduino, Librairie RTC, Datasheet du DS1307
trop bien, merci mon copain
RépondreSupprimer