Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*-------------------------------------
- 5 DHT
- scrittura su SD + LCD
- FUNZIONA DATALOGGING NO TERMOMETRO
- miglioramenti:
- >>>>> lcd.print(F("stringa statica"));
- >>>>> eliminazione serial monitor
- //-------------------------------------*/
- //MISURO TEMPERATURA E UMIDITA' DA 5 DIVERSI DHT22;
- //SALVO I DATI SU FILE .TXT SU SD CARD
- //VISUALIZZO GLI STESSI VALORI SU SERIAL MONITOR
- //IMPOSTO LETTURA OGNI 10 min
- #include <SD.h>
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include "RTClib.h"
- #include <SPI.h>
- //#include "SPI.h"
- #include "DHT.h" // include libreria dht
- DHT dht1; //collegato al _______
- DHT dht2; //collegato al _______
- DHT dht3; //collegato al _______
- DHT dht4; //collegato al _______
- DHT dht5; //collegato al _______
- LiquidCrystal_I2C lcd(0x27,20,4);
- RTC_DS1307 RTC;
- const int chipSelect = 10;
- short i=0;
- void setup()
- {
- Wire.begin();
- lcd.init();
- RTC.begin();
- lcd.backlight(); //usa il metodo backlight() per accendere la retroilluminazione
- lcd.setCursor(0,0);
- lcd.print(F("--------------------"));
- lcd.setCursor(0,1);
- lcd.print(F("DATA LOGGER: 5x DHT"));
- lcd.setCursor(2,2);
- lcd.print(F("Versione 1.1"));
- delay(1000);
- //INIZIALIZZO I PIN
- //pin 10 riservato al card reader
- pinMode(10, OUTPUT);
- dht1.setup(5); //collegato al dht in box
- dht2.setup(6); //collegato al dht in vasca
- dht3.setup(7); //collegato al dht ext
- dht4.setup(8); //collegato al dht in vasca
- dht5.setup(9); //collegato al dht ext
- //-----------------------------------------------------------
- lcd.clear();
- //se il modulo sd non viene correttamente inizializzato
- if (!SD.begin(chipSelect)) {
- //messaggio di errore
- lcd.setCursor(0,1);
- lcd.print(F("Lettura SD failed /"));
- lcd.setCursor(0,2);
- lcd.print(F(" Card non presente"));
- delay(1000);
- return;
- }
- //se correttamente inizializzata...
- lcd.print(F("card initialized."));
- delay(1000);
- //-----------------------------------------------------------
- //STAMPA LEGENDA SU SD
- //apriamo in scrittura il file sulla sd
- File dataFile = SD.open("DATITEMP.txt", FILE_WRITE);
- //Scriviamo: giorno/mese - ORA:MINUTI:SECONDI - temperatura - umidità
- 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 ");
- dataFile.close();
- //inizializziamo l'RTC
- if (! RTC.isrunning()) {
- lcd.print("RTC is NOT running!");
- RTC.adjust(DateTime(__DATE__, __TIME__));
- }
- }
- void loop(){
- //chiediamo il tempo all'RTC
- DateTime now = RTC.now();
- int analogPin=0;
- int sensor =2;
- int minuti = now.minute();
- //SET INTERVALLO DI LETTURA
- //if (minuti == 00 || minuti == 10 || minuti == 20 || minuti == 30 || minuti == 40 || minuti == 50){
- delay(1000);{
- //leggiamo e convertiamo le temperature dai 3 DHT22
- float humidity1 = dht1.getHumidity();
- float temperature1 = dht1.getTemperature();
- float humidity2 = dht2.getHumidity();
- float temperature2 = dht2.getTemperature();
- float humidity3 = dht3.getHumidity();
- float temperature3 = dht3.getTemperature();
- float humidity4 = dht4.getHumidity();
- float temperature4 = dht4.getTemperature();
- float humidity5 = dht5.getHumidity();
- float temperature5 = dht5.getTemperature();
- //STAMPA SU LCD
- lcd.clear();
- lcd.print(F(" #1 #2 #3 #4 #5"));
- lcd.setCursor(0,1);
- lcd.print(F("Tmp"));
- lcd.setCursor(0,2);
- lcd.print(F("RH"));
- //lcd.setCursor(colonna, riga)
- //NB: numerazione parte da ZERO
- lcd.setCursor(4,1);
- lcd.print(temperature1,0);
- lcd.print(F(" "));
- lcd.print(temperature2,0);
- lcd.print(F(" "));
- lcd.print(temperature3,0);
- lcd.print(F(" "));
- lcd.print(temperature4,0);
- lcd.print(F(" "));
- lcd.print(temperature5,0);
- lcd.print(char(223));
- lcd.print(F("C"));
- lcd.setCursor(4,2);
- lcd.print(humidity1,0);
- lcd.print(F(" "));
- lcd.print(humidity2,0);
- lcd.print(F(" "));
- lcd.print(humidity3,0);
- lcd.print(F(" "));
- lcd.print(humidity4,0);
- lcd.print(F(" "));
- lcd.print(humidity5,0);
- lcd.print(F(" %"));
- //STAMPA SU SD
- //if (minuti == 00 || minuti == 10 || minuti == 20 || minuti == 30 || minuti == 40 || minuti == 50){
- delay(1000);{
- //apriamo in scrittura il file sulla sd
- File dataFile = SD.open("DATITEMP.txt", FILE_WRITE);
- if (dataFile) {
- if ((now.day() <= 9))
- { dataFile.print("0"); }
- dataFile.print(now.day(), DEC);
- dataFile.print(" / ");
- if ((now.month() <= 9))
- { dataFile.print("0"); }
- dataFile.print(now.month(), DEC);
- dataFile.print(" / ");
- dataFile.print(now.year(), DEC);
- dataFile.print(" - ");
- if ((now.hour() <= 9))
- { dataFile.print("0"); }
- dataFile.print(now.hour(), DEC);
- dataFile.print(":");
- if ((now.minute() <= 9))
- { dataFile.print("0"); }
- dataFile.print(now.minute(), DEC);
- dataFile.print(" | ");
- //------------------
- dataFile.print(temperature1);
- dataFile.print(" *C");
- dataFile.print (" - ");
- dataFile.print (humidity1,1);
- dataFile.print (" % ");
- dataFile.print (" | ");
- //------------------
- dataFile.print(temperature2);
- dataFile.print(" *C");
- dataFile.print (" - ");
- dataFile.print (humidity2,1);
- dataFile.print (" % ");
- dataFile.print (" | ");
- //------------------
- dataFile.print(temperature3);
- dataFile.print(" *C");
- dataFile.print (" - ");
- dataFile.print (humidity3,1);
- dataFile.print (" % ");
- dataFile.print (" | ");
- //------------------
- dataFile.print(temperature4);
- dataFile.print(" *C");
- dataFile.print (" - ");
- dataFile.print (humidity4,1);
- dataFile.print (" % ");
- dataFile.print (" | ");
- //------------------
- dataFile.print(temperature5);
- dataFile.print(" *C");
- dataFile.print (" - ");
- dataFile.print (humidity5,1);
- dataFile.print (" % ");
- dataFile.println(" ");
- //chiudiamo il file
- dataFile.close();
- //aspettiamo 60secondi
- delay(60000);
- }
- else {
- //errore nell'apertura del file o card rimossa
- lcd.setCursor(1,3);
- lcd.print("Error opening .txt");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment