Guest User

Untitled

a guest
Dec 25th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.41 KB | None | 0 0
  1. /*-------------------------------------
  2.              5 DHT
  3.            scrittura su SD + LCD
  4.  
  5. FUNZIONA DATALOGGING NO TERMOMETRO
  6.              
  7.         miglioramenti:
  8.         >>>>> lcd.print(F("stringa statica"));
  9.         >>>>> eliminazione serial monitor
  10. //-------------------------------------*/
  11.  
  12. //MISURO TEMPERATURA E UMIDITA' DA 5 DIVERSI DHT22;
  13. //SALVO I DATI SU FILE .TXT SU SD CARD
  14. //VISUALIZZO GLI STESSI VALORI SU SERIAL MONITOR
  15. //IMPOSTO LETTURA OGNI 10 min
  16.  
  17. #include <SD.h>
  18. #include <Wire.h>
  19. #include <LiquidCrystal_I2C.h>
  20. #include "RTClib.h"
  21. #include <SPI.h>
  22. //#include "SPI.h"
  23. #include "DHT.h" // include libreria dht
  24. DHT dht1;  //collegato al _______
  25. DHT dht2;  //collegato al _______
  26. DHT dht3;  //collegato al _______
  27. DHT dht4;  //collegato al _______
  28. DHT dht5;  //collegato al _______
  29. LiquidCrystal_I2C lcd(0x27,20,4);
  30. RTC_DS1307 RTC;
  31. const int chipSelect = 10;
  32. short i=0;
  33. void setup()
  34. {
  35.   Wire.begin();
  36.   lcd.init();
  37.   RTC.begin();
  38.   lcd.backlight();       //usa il metodo backlight() per accendere la retroilluminazione
  39.   lcd.setCursor(0,0);
  40.   lcd.print(F("--------------------"));
  41.   lcd.setCursor(0,1);
  42.   lcd.print(F("DATA LOGGER: 5x DHT"));
  43.   lcd.setCursor(2,2);
  44.   lcd.print(F("Versione 1.1"));
  45.   delay(1000);
  46.  
  47.   //INIZIALIZZO I PIN
  48.   //pin 10 riservato al card reader
  49.   pinMode(10, OUTPUT);
  50.   dht1.setup(5);  //collegato al dht in box
  51.   dht2.setup(6);  //collegato al dht in vasca
  52.   dht3.setup(7);  //collegato al dht ext
  53.   dht4.setup(8);  //collegato al dht in vasca
  54.   dht5.setup(9);  //collegato al dht ext
  55.  
  56. //-----------------------------------------------------------
  57.   lcd.clear();
  58.   //se il modulo sd non viene correttamente inizializzato
  59.   if (!SD.begin(chipSelect)) {
  60.   //messaggio di errore
  61.   lcd.setCursor(0,1);
  62.   lcd.print(F("Lettura SD failed /"));
  63.   lcd.setCursor(0,2);
  64.   lcd.print(F("  Card non presente"));
  65.   delay(1000);
  66.   return;
  67.    }
  68.   //se correttamente inizializzata...
  69.   lcd.print(F("card initialized."));
  70.   delay(1000);
  71.  
  72. //-----------------------------------------------------------
  73.  
  74.  
  75.   //STAMPA LEGENDA SU SD
  76.   //apriamo in scrittura il file sulla sd
  77.   File dataFile = SD.open("DATITEMP.txt", FILE_WRITE);
  78.  
  79.   //Scriviamo: giorno/mese - ORA:MINUTI:SECONDI - temperatura - umidità
  80.   dataFile.println("gg /mese/ anno  -  hh:min  |  TEMP 1         RH 1       |  TEMP 2         RH 2       |  TEMP 3         RH 3       |  TEMP 4         RH 4       |  TEMP 5         RH 5     ");
  81.   dataFile.close();
  82.    
  83.   //inizializziamo l'RTC
  84.   if (! RTC.isrunning()) {
  85.     lcd.print("RTC is NOT running!");
  86.     RTC.adjust(DateTime(__DATE__, __TIME__));
  87.   }
  88.   }
  89. void loop(){
  90.   //chiediamo il tempo all'RTC
  91.   DateTime now = RTC.now();
  92.   int analogPin=0;
  93.   int sensor =2;  
  94.   int minuti = now.minute();
  95.  
  96.   //SET INTERVALLO DI LETTURA
  97.   //if (minuti == 00 || minuti == 10 || minuti == 20 || minuti == 30 || minuti == 40 || minuti == 50){      
  98.   delay(1000);{
  99.    
  100.   //leggiamo e convertiamo le temperature dai 3 DHT22
  101.   float humidity1 = dht1.getHumidity();
  102.   float temperature1 = dht1.getTemperature();
  103.   float humidity2 = dht2.getHumidity();
  104.   float temperature2 = dht2.getTemperature();
  105.   float humidity3 = dht3.getHumidity();
  106.   float temperature3 = dht3.getTemperature();
  107.   float humidity4 = dht4.getHumidity();
  108.   float temperature4 = dht4.getTemperature();
  109.   float humidity5 = dht5.getHumidity();
  110.   float temperature5 = dht5.getTemperature();
  111.  
  112.    //STAMPA SU LCD
  113.   lcd.clear();
  114.   lcd.print(F("    #1 #2 #3 #4 #5"));
  115.   lcd.setCursor(0,1);
  116.   lcd.print(F("Tmp"));
  117.   lcd.setCursor(0,2);
  118.   lcd.print(F("RH"));
  119.   //lcd.setCursor(colonna, riga)
  120.   //NB: numerazione parte da ZERO
  121.   lcd.setCursor(4,1);
  122.   lcd.print(temperature1,0);
  123.   lcd.print(F(" "));
  124.   lcd.print(temperature2,0);
  125.   lcd.print(F(" "));
  126.   lcd.print(temperature3,0);
  127.   lcd.print(F(" "));
  128.   lcd.print(temperature4,0);
  129.   lcd.print(F(" "));
  130.   lcd.print(temperature5,0);
  131.   lcd.print(char(223));
  132.   lcd.print(F("C"));
  133.  
  134.   lcd.setCursor(4,2);
  135.   lcd.print(humidity1,0);
  136.   lcd.print(F(" "));
  137.   lcd.print(humidity2,0);
  138.   lcd.print(F(" "));
  139.   lcd.print(humidity3,0);
  140.   lcd.print(F(" "));
  141.   lcd.print(humidity4,0);
  142.   lcd.print(F(" "));
  143.   lcd.print(humidity5,0);
  144.   lcd.print(F(" %"));
  145.  
  146.   //STAMPA SU SD
  147.   //if (minuti == 00 || minuti == 10 || minuti == 20 || minuti == 30 || minuti == 40 || minuti == 50){
  148.   delay(1000);{
  149.     //apriamo in scrittura il file sulla sd
  150.   File dataFile = SD.open("DATITEMP.txt", FILE_WRITE);
  151.      
  152.   if (dataFile) {
  153.    
  154.           if ((now.day() <= 9))
  155.           { dataFile.print("0"); }
  156.     dataFile.print(now.day(), DEC);
  157.     dataFile.print(" / ");
  158.           if ((now.month() <= 9))
  159.           { dataFile.print("0"); }
  160.     dataFile.print(now.month(), DEC);
  161.     dataFile.print(" / ");
  162.     dataFile.print(now.year(), DEC);
  163.     dataFile.print("  -  ");
  164.           if ((now.hour() <= 9))
  165.           { dataFile.print("0"); }
  166.     dataFile.print(now.hour(), DEC);
  167.     dataFile.print(":");
  168.           if ((now.minute() <= 9))
  169.           { dataFile.print("0"); }
  170.     dataFile.print(now.minute(), DEC);
  171.     dataFile.print("   |  ");
  172.            //------------------
  173.     dataFile.print(temperature1);
  174.     dataFile.print("  *C");
  175.     dataFile.print ("   -  ");
  176.     dataFile.print (humidity1,1);
  177.     dataFile.print ("  % ");
  178.     dataFile.print ("   |  ");
  179.   //------------------
  180.     dataFile.print(temperature2);
  181.     dataFile.print("  *C");
  182.     dataFile.print ("   -  ");
  183.     dataFile.print (humidity2,1);
  184.     dataFile.print ("  % ");
  185.     dataFile.print ("   |  ");
  186.       //------------------
  187.   dataFile.print(temperature3);
  188.     dataFile.print("  *C");
  189.     dataFile.print ("   -  ");
  190.     dataFile.print (humidity3,1);
  191.     dataFile.print ("  % ");  
  192.     dataFile.print ("   |  ");  
  193.     //------------------
  194.   dataFile.print(temperature4);
  195.     dataFile.print("  *C");
  196.     dataFile.print ("   -  ");
  197.     dataFile.print (humidity4,1);
  198.     dataFile.print ("  % ");  
  199.     dataFile.print ("   |  ");  
  200.     //------------------
  201.   dataFile.print(temperature5);
  202.     dataFile.print("  *C");
  203.     dataFile.print ("   -  ");
  204.     dataFile.print (humidity5,1);
  205.     dataFile.print ("  % ");
  206.  
  207.     dataFile.println(" ");
  208.     //chiudiamo il file
  209.     dataFile.close();
  210.      
  211.    //aspettiamo 60secondi
  212.   delay(60000);
  213.   }
  214.  
  215.   else {
  216.    //errore nell'apertura del file o card rimossa
  217.    lcd.setCursor(1,3);
  218.    lcd.print("Error opening .txt");
  219.   }
  220.   }
  221.   }
  222. }
Advertisement
Add Comment
Please, Sign In to add comment