Advertisement
Ollivier

date heure temp hum

Aug 13th, 2020 (edited)
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.27 KB | None | 0 0
  1.  
  2. #include <Wire.h>
  3. #include <DS1307.h>
  4. #include <SHT1x.h>
  5. #define updata_flag 0 // 1 : Mise à jour du temps ; 0 : Affiche l'heure
  6.  
  7. // A modifier pour mettre "à l'heure"
  8. #define TIME_YR    20                       // année sans "20" de 2000
  9. #define TIME_MTH   8                        // numéro du mois de l'année
  10. #define TIME_DATE  13                       // jour du mois
  11. #define TIME_DOW   4                        // jour de la semaine (lundi : 1; mardi : 2; mercredi : 3; etc)
  12. #define TIME_HR    16                       // heures
  13. #define TIME_MIN   10                       // minutes
  14. #define TIME_SEC   0                        // seconde
  15.  
  16. #define dataPin  10                         // pin digital de connexion data Sensor
  17. #define clockPin 11                         // pin digital de connexion SCK Sensor
  18.  
  19. SHT1x sht15(dataPin, clockPin);             // instanciation de l'occurence sht15() de l'objet SHT1x
  20.  
  21. char* jour[] = {"lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche"}; // nom du jour de la semaine
  22.  
  23. char* mois[] = {"janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"}; // nom du mois
  24.  
  25. int rtc[7];                                 // tableau qui contiendra les valeurs du temps présent
  26.  
  27. unsigned long cycle;                        // repère temporel pour l'affichage des secondes ("refresh" ou nouveau Serial.print())
  28. unsigned long cycleSensor;                  // repère temporel pour la lecture des senseur de température et humidité
  29. unsigned long MargeCycleSensor = 30000;     // delais entre chaque lecture des senseurs
  30. float temp_c;                               // température en celsius
  31. float temp_f;                               // température en Fareneit
  32. float humidity;                             // taux d'humidité de l'air
  33.  
  34. void showMeteo () {                         // fonction qui affiche la ltempérature et l'humidité
  35.   Serial.print("Température : ");
  36.   Serial.print(temp_c, 1);
  37.   Serial.println("°C");
  38.   Serial.print("Température : ");
  39.   Serial.print(temp_f, 1);
  40.   Serial.println("°F");
  41.   Serial.print("Humidité : ");
  42.   Serial.print(humidity);
  43.   Serial.println("%");
  44.   Serial.println("**********");
  45. }
  46.  
  47. void showtime() {                           // fonction qui affiche l'heure
  48.   RTC.get(rtc, true);
  49.   {
  50.     Serial.print( jour[rtc[3] - 1]);        // jour de la semaine
  51.     Serial.print(" ");                      // "espace"
  52.     Serial.print( rtc[4]);                  // date mois année : numéro du jour
  53.     if (rtc[4] < 2) {
  54.       Serial.print("er");                   // on rajouter "er" apres le numero du jour si on est le 1er du mois
  55.     }
  56.     Serial.print(" ");                      // "espace"
  57.     Serial.print( mois[rtc[5] - 1]);        // mois de l'année
  58.     Serial.print(" ");                      // "espace"
  59.     Serial.println( rtc[6]);                // année avec "20" de 2000
  60.  
  61.     Serial.print( rtc[2]);                  // heures minutes secondes
  62.     Serial.print(":");                      // ":"
  63.     if (rtc[1] < 10) {
  64.       Serial.print("0");                    // on rajoute un zéro si les minutes sont inférieures à 10
  65.     }
  66.     Serial.print( rtc[1]);                  // valeur des minutes
  67.     Serial.print(":");                      // ":"
  68.     if (rtc[0] < 10) {
  69.       Serial.print("0");                    // on rajoute un zéro si les secondes sont inférieures à 10
  70.     }
  71.     Serial.println( rtc[0]);                // valeur des secondes
  72.   }
  73. }
  74.  
  75. void setup() {
  76.   Serial.begin(9600);                       // initialisation Serial
  77.   Wire.begin();                             // lancement connexion simplifiée
  78.  
  79.   if (updata_flag){                         // si updata_flag 1
  80.     Serial.println(" Ancienne heure : ");
  81.     showtime();
  82.     RTC.stop();
  83.  
  84.     RTC.set(DS1307_SEC, TIME_SEC);    // Mise a jour du Temps
  85.     RTC.set(DS1307_MIN, TIME_MIN);
  86.     RTC.set(DS1307_HR, TIME_HR);
  87.     RTC.set(DS1307_DOW, TIME_DOW);
  88.     RTC.set(DS1307_DATE, TIME_DATE);
  89.     RTC.set(DS1307_MTH, TIME_MTH);
  90.     RTC.set(DS1307_YR, TIME_YR);
  91.     RTC.start();
  92.     Serial.println(" Heure mise à jour : ");
  93.     showtime();
  94.   } else {
  95.     cycle = millis();                           // marquage temporel pour les secondes
  96.     cycleSensor = millis() + MargeCycleSensor;  // marquage plus marge pour les senseurs (1 seule fois)
  97.   }
  98. }
  99.  
  100.  
  101. void loop() {
  102.  
  103.   if (millis() - cycleSensor >= MargeCycleSensor) {   // toutes les 30s
  104.     temp_c = sht15.readTemperatureC();                // lecture température celsius
  105.     temp_f = sht15.readTemperatureF();                // lecture température Farenheit
  106.     humidity = sht15.readHumidity();                  // lecture taux d'humidité
  107.     cycleSensor = millis();                           // réinitialisation du repère temporel des senseurs
  108.   }
  109.  
  110.   if (millis() - cycle >= 500) {                     // toutes les secondes
  111.     if (updata_flag == 0) {                           // si updata_flag 0
  112.       showtime();                                     // affiche l'heure
  113.       showMeteo();                                    // affiche la météo
  114.     }
  115.    
  116.     cycle = millis();                                 // réinitialisation du repère temporel de l'heure (seconde)
  117.   }
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement