bonjour
tout est dans le titre je n'arrive pas a trouver pourquoi
pour l'installation j'ai un ecran lcd i2c ou il ya un message , un deuxieme ecran lcd i2c ou sur la premiere ligne la date , sur la deuxieme ligne la temperature et l humidité avec capteut DHT22 i2c et pour finir un afficheur 7 segment 4dgit i2c ou il ya l'heure le tout avec RTC DS3231 i2c
quand je les scann ils sont tous la :
" Scanning...
I2C device found at address 0x27 ! ecran lcd
I2C device found at address 0x3F ! ecran lcd2
I2C device found at address 0x57 !
I2C device found at address 0x5F !
I2C device found at address 0x68 !
done"
donc quand j allume tout ca rien n'est a jour il faut que je televerse pour mettre a jour , je ne trouve pas le probleme voici mon code je suis tres novice sur arduino alors hesitez pas a corriger si il ya des lignes de code inutile , mal placé etc....
merci d'avance pour votre aide je ne sais plus quoi faire avec cette heure qui ne ce met pas a jour
// LIBRAIRIES
#include <DHT.h> // inclure les librairies
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h> //librairie à télécharger en ZIP sur https://github.com/jcw/rtclib
#include "TM1637.h"
#include "RTClib.h"
// Digital
//{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
//0~9,A,b,C,d,E,F,"-"," ",degree,r,h
#define CLK 4//Pins for TM1637
#define DIO 5
TM1637 tm1637(CLK,DIO);
// Date and time functions using a DS3231 RTC connected via I2C and Wire lib
RTC_DS3231 rtc;
int hh, mm;
// Fin
// ECRAN
LiquidCrystal_I2C lcd(0x27, 16,2); // Initialise le module 1602 I2C
LiquidCrystal_I2C lcd2 (0x3f,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
// FIN
// FIN
// DHT 22
const int relayPin = 13; // PIN 13 pour test sur une LED de la carte
const int DHTPIN = 13;
// Type de capteur utiliser
#define DHTTYPE DHT22 // DHT 11
DHT dht(DHTPIN, DHTTYPE);// Initialise le capteur DHT11
// FIN
//RTC
DateTime now;
char daysOfTheWeek[7][12] = {"Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"};
void showDate(void);
void showTime(void);
void showDay(void);
//FIN
void setup() {
// RTC
lcd.init(); // initialisation du LCD1
lcd2.init(); // initialisation du LCD2
lcd.backlight();
lcd2.backlight();
lcd.print("Initialisation...."); //afficher un message sur l'afficheur LCD
lcd2.print("Initialisation...."); //afficher un message sur l'afficheur LCD
delay (2500) ;
delay (2500);
Wire.begin();
Wire.begin();
lcd.begin(16,2);
lcd2.begin(16,2);
Serial.begin(9600);
//delay(2000);
if (! rtc.begin())
{
Serial.println("Couldn't find RTC Module");
while (1);
}
if (rtc.lostPower())
{
Serial.println("RTC lost power, lets set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Fin
// Digital
tm1637.init();
tm1637.set(5);
//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
rtc.begin();
// manual adjust
// December , 2018 at 19pm you would call:
rtc.adjust(DateTime(2018, 12, 23, 04, 01, 0));
// automatic adjust
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// Fin
// DATE
// Print a message to the LCD.
lcd2.backlight();
lcd2.setCursor(5,0);
lcd2.print("Salut");
lcd2.setCursor(2,1);
lcd2.print("Mugen Zaraki");
// FIN
// RTC
}
void loop()
{
now = rtc.now();
showDate();
showDay();
showTime();
}
void showDate()
{
lcd.setCursor(5,0);
lcd.print(now.day());
lcd.print('/');
lcd.print(now.month());
lcd.print('/');
lcd.print(now.year());
}
void showDay()
{
lcd.setCursor(0,0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
}
void showTime()
{
// Fin
//Digital
DateTime now = rtc.now();
hh = now.hour(), DEC;
mm = now.minute(), DEC;
tm1637.point(POINT_OFF);
tm1637.display(0,hh/10); // hour
tm1637.display(1,hh%10);
tm1637.display(2,mm/10); // minutes
tm1637.display(3,mm%10); //
delay(100);
tm1637.point(POINT_ON);
tm1637.display(0,hh/10); // hour
tm1637.display(1,hh%10);
tm1637.display(2,mm/10); // minutes
tm1637.display(3,mm%10); //
delay(100);
// Fin
// BOUCLE TEMPERATURE
// Lecture de température et de l'humiditer environ 250 millisecondes
// La durer des capteurs peuvent etre regler jusqu'a 2 secondes (capteur tres lent)
float h = dht.readHumidity();
// Lit la temperature en degres Celsius (valeur par defaut
float t = dht.readTemperature();
float c = dht.readTemperature(true);
// Vérifie si toutes les lectures ont échoué et quitte le début (pour réessayer).
if (isnan(h) || isnan(t) || isnan(c)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// FIN
// Temperature et humidité LCD
lcd.setCursor(0, 1);
lcd.print("");
lcd.print(t);
lcd.print(" C");
lcd.setCursor(9, 1);
lcd.print("");
lcd.print(h);
lcd.print(" % ");
Serial.print("Temperature = ");
Serial.print(t);
Serial.print(" *C ");
Serial.print("Humidity = ");
Serial.print(h);
Serial.print(" %\t ");
Serial.println();
if (h >= 75 && h <= 80) // si hum. est = ou sup. a 75 ET hum infer. ou = a 80 relais ouvert
{
digitalWrite(relayPin, HIGH);
}
else
{
digitalWrite(relayPin, LOW); // Sinon relais fermé
}
delay(1000);// Delai d'une seconde entre les mesures
}
// FIN