// Lycée PE MARTIN
// Le 20/2/2024
// Titre : Le Bus I2C
// Matériels : Arduino Uno, Analyseur Logic, HTR DS1307 (0x68)
// Description : voir le sujet
// RTClib : https://adafruit.github.io/RTClib/html/class_r_t_c___d_s1307.html
// Bibliothèques
#include "RTClib.h"
#include "LiquidCrystal_I2C.h"
// L'analyseur logique mesure les signaux SCL et SDA lorsqu'un
// état logique haut est présent sur son entrée D7
#define trigger 2
// LCD
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
// Constructeurs
RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
// Variables
DateTime now;
bool _dt = false;
void setup() {
// Configurations
Serial.begin(57600);
pinMode(trigger, OUTPUT);
// LCD
lcd.init();
lcd.backlight();
// Test
//digitalWrite(trigger, HIGH); // Déclenchement de la mesure
// Réglages HTR
if (! rtc.begin()) {
Serial.println("RTC non trouvé");
Serial.flush();
while (1) delay(10);
}
if (! rtc.isrunning()) {
Serial.println("RTC ne fonctionne PAS, on règle l'heure !");
// Lorsque l'heure doit être réglée sur un nouvel appareil,
// ou après une coupure de courant, la ligne suivante définit le RTC
// sur la date et l'heure de compilation de ce croquis
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
// Lecture de l'heure
now = rtc.now();
//digitalWrite(trigger, LOW); // Arrêt de la mesure
// Affichage de la date
lcd.print("PEM SIN : TP I2C");
lcd.setCursor(4, 1);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
delay(3000);
lcd.setCursor(4, 1);
lcd.print(" ");
}
void loop() {
if (_dt) {
now = rtc.now();
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(4, 1);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
delay(3000);
lcd.setCursor(0, 1);
lcd.print(" ");
_dt = false;
}
else {
for (int i = 0; i < 10; i++) {
now = rtc.now();
lcd.setCursor(4, 1);
lcd.print(now.hour(), DEC);
lcd.print("h");
lcd.print(now.minute(), DEC);
lcd.print("mn");
lcd.print(now.second(), DEC);
lcd.print("s ");
delay(1000);
_dt = true;
}
}
}
TP BUS I2C
HTR