bonjours je débute dans l'Arduino et j'essaye de faire une horloge avec un écran lcd et un rtc ds1307 mais le problème et que une heure s'affiche mais elle reste fixe et ce n'est pas la bonne
#include <LiquidCrystal.h>
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 RTC;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Wire.begin();
RTC.begin();
lcd.begin(16, 2);
RTC.adjust(DateTime(__DATE__, __TIME__));
}
void loop() {
DateTime now = RTC.now();
// l'heure sur la premiêre ligne du LCD
lcd.setCursor(0, 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());
// la date sur la deuxième ligne du LCD
lcd.setCursor(0, 1);
lcd.print(now.day());
lcd.print(" ");
switch (now.month()) {
case 1:
lcd.print("janvier");
break;
case 2:
lcd.print("fevrier");
break;
case 3:
lcd.print("mars");
break;
case 4:
lcd.print("avril");
break;
case 5:
lcd.print("mai");
break;
case 6:
lcd.print("juin");
break;
case 7:
lcd.print("juillet");
break;
case 8:
lcd.print("aout");
break;
case 9:
lcd.print("septembre");
break;
case 10:
lcd.print("octobre");
break;
case 11:
lcd.print("novembre");
break;
case 12:
lcd.print("decembre");
break;
}
lcd.print(" ");
lcd.print(now.year());
delay(1000);
lcd.clear();
}
L'exemple, sur ce site est avec un UNO et tu utilises un Mega, le bus i2C n'est pas sur les mêmes broches:
Le UNO
Le Mega:
Le plus souvent, sur ces 2 cartes, il y a des broches marques pour l'i2C,SDA et SCL:
Le UNO:
Le Mega:
PS: Dès la première mise à l'heure de ta RTC, cette ligne: RTC.adjust(DateTime(__DATE__, __TIME__));
est à mettre en remarque (//), sinon, à chaque reset de l'Arduino, la RTC va se mettre à l'heure et à la date de la dernière compilation!