Advertisement
J0N4TH4NGR4NDM0NT

LCD I2C 2004 + RTC + DHT11 + SDCARD // Recording 2 DHT11 every minute

Apr 15th, 2022
427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Wire.h>
  2.  
  3. #include <RTC.h>
  4. static DS1307 RTC;
  5.  
  6. #include <SPI.h>
  7. #include <SD.h>
  8.  
  9. #include <LiquidCrystal_I2C.h>
  10. LiquidCrystal_I2C lcd(0x27,20,4);
  11.  
  12. #include "DHT.h"
  13. #define dht_int A2
  14. #define dht_ext A1
  15. #define DHTTYPE DHT11
  16. DHT dht1(dht_int, DHTTYPE);
  17. DHT dht2(dht_ext, DHTTYPE);
  18.  
  19. //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*//
  20.   File myFile;
  21.  
  22.   void save_temperature() {
  23.   myFile = SD.open("temp.txt", FILE_WRITE);
  24.  
  25.   float h1 = dht1.readHumidity();
  26.   float t1 = dht1.readTemperature();
  27.   float f1 = dht1.readTemperature(true);
  28.   float h2 = dht2.readHumidity();
  29.   float t2 = dht2.readTemperature();
  30.   float f2 = dht2.readTemperature(true);
  31.  
  32.   if (RTC.getDay()<10){
  33.   myFile.print(0);
  34.   }
  35.   myFile.print(RTC.getDay());
  36.   myFile.print("-");
  37.   if (RTC.getMonth()<10){
  38.   myFile.print(0);
  39.   }
  40.   myFile.print(RTC.getMonth());
  41.   myFile.print(",");
  42.   if (RTC.getHours()<10){
  43.   myFile.print(0);
  44.   myFile.print(RTC.getHours());
  45.   myFile.print(":");
  46.   if (RTC.getMinutes()<10){
  47.   myFile.print(0);
  48.   }
  49.   myFile.print(RTC.getMinutes());
  50. /*  myFile.print(":");
  51.   if (RTC.getSeconds()<10){
  52.   myFile.print(0);
  53.   }
  54.   myFile.print(RTC.getSeconds());
  55.   */
  56.   myFile.print(",");
  57.   myFile.print("T+H_INT:,");
  58.   myFile.print(t1);
  59.   myFile.print(",");
  60.   myFile.print(h1);
  61.   myFile.print(",");
  62.   myFile.print("T+H_EXT:,");
  63.   myFile.print(t2);
  64.   myFile.print(",");
  65.   myFile.println(h2);
  66.   myFile.close();
  67. }
  68. }
  69. //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*//
  70.   void lcd_display_temp(){
  71.    
  72.   float h1 = dht1.readHumidity();
  73.   float t1 = dht1.readTemperature();
  74.   float f1 = dht1.readTemperature(true);
  75.   float h2 = dht2.readHumidity();
  76.   float t2 = dht2.readTemperature();
  77.   float f2 = dht2.readTemperature(true);
  78.  
  79.   lcd.setCursor(0,1);
  80.   lcd.print("INT:");
  81.   lcd.print(t1);
  82.   lcd.print("C ");
  83.   lcd.print("H:");
  84.   lcd.print(h1);
  85.   lcd.print("%");
  86.  
  87.   lcd.setCursor(0,2);
  88.   lcd.print("EXT:");
  89.   lcd.print(t2);
  90.   lcd.print("C ");
  91.   lcd.print("H:");
  92.   lcd.print(h2);
  93.   lcd.print("%");
  94.   }
  95. //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*//  
  96.   void lcd_display_time() {
  97.  
  98.   float h1 = dht1.readHumidity();
  99.   float t1 = dht1.readTemperature();
  100.   float f1 = dht1.readTemperature(true);
  101.   float h2 = dht2.readHumidity();
  102.   float t2 = dht2.readTemperature();
  103.   float f2 = dht2.readTemperature(true);
  104.      
  105.   lcd.setCursor(0,0);
  106.   if (RTC.getDay()<10){
  107.   lcd.print(0);
  108.   }
  109.   lcd.print(RTC.getDay());
  110.   lcd.print("-");
  111.   if (RTC.getMonth()<10){
  112.   lcd.print(0);
  113.   }
  114.   lcd.print(RTC.getMonth());
  115.   lcd.print("-");
  116.   lcd.print(RTC.getYear());
  117.  
  118.   lcd.print(" ");
  119.   if (RTC.getHours()<10){
  120.   lcd.print(0);
  121.   }
  122.   lcd.print(RTC.getHours());
  123.   lcd.print(":");
  124.   if (RTC.getMinutes()<10){
  125.   lcd.print(0);
  126.   }
  127.   lcd.print(RTC.getMinutes());
  128.  
  129. /*lcd.print(":");
  130.   if (RTC.getSeconds()<10){
  131.   lcd.print(0);
  132.   }
  133.   lcd.print(RTC.getSeconds());
  134.   */
  135.   }
  136. //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*//
  137. void setup()
  138. {
  139.   Serial.begin(9600);
  140.   RTC.begin();
  141.   Wire.begin();
  142.   dht1.begin();
  143.   dht2.begin();
  144.   SD.begin(10);
  145.   delay(100);
  146.   lcd.init();
  147.   lcd.backlight();
  148.  
  149. /*  Serial.print("Initializing SD card...");
  150.   if (!SD.begin(10)) {
  151.   Serial.println("initialization failed!");
  152.   while (1);
  153.   }
  154.   Serial.println("initialization done.");
  155. */  
  156. }
  157. //*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*//
  158. void loop()
  159. {
  160.   save_temperature();
  161.   lcd_display_time();
  162.   lcd_display_temp();
  163.  
  164.   delay(60000);
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement