problemas de guardado de lecturas de sensores en sd card con tiempos de 10 mits

a qui publicando mis inquietudes sobre el guardado de lecturas de sensores, tipo dht22 termocupla de radiación UV, estoy trabajando en un proyecto de mediciones de lecturas con sensores, usando la rtc para el tiempo, visualizándolos en pantalla cada 1.5 segundos pero que el guardado quede fuera de la pantalla sin que se note, quisiera pedirles algunas sugerencias sobre como me podria funcionar el guardado con múltiples sensores distintos

para_foro_de_arduino.ino (8.74 KB)

#include <Wire.h>
#include <SPI.h> //para el modulo de la tarjeta SD
#include <SD.h> // para la tarjeta SD
#include "RTClib.h"
RTC_DS3231 rtc;
int hora=0;
int minutos=0;
int segundos=0;

#include <LiquidCrystal_I2C.h> // libreria para LCD por I2C

LiquidCrystal_I2C lcd (0x3f, 2, 1, 0, 4, 5, 6, 7); // DIR, E, RW, RS, D4, D5, D6, D7
#include <LCD.h> // Incluimos la librería para el uso del display
/////////////////////////////////////////////
#include <Wire.h>
#include <DHT.h> // importa la Librerias DHT
#include <DHT_U.h>
int SENSOR1 = 31; // pin DATA de DHT22 un pin digital 4
int TEMPERATURA1;
int HUMEDAD1;
DHT dht1 (SENSOR1, DHT22); // creación del objeto, cambiar segundo parámetro
// por DHT11 si se utiliza en lugar del DHT22
int SENSOR2 = 33; // pin DATA de DHT22 un pin digital 2
int TEMPERATURA2;
int HUMEDAD2;
DHT dht2 (SENSOR2, DHT22); // creación del objeto, cambiar segundo parámetro
// por DHT11 si se utiliza en lugar del DHT22
//////////////////////////////////////////////////////////////
#include "max6675.h"
int soPin = 6;// SO=Serial Out
int csPin = 3;// CS = chip select CS pin
int sckPin = 13;// SCK = Serial Clock pin
MAX6675 thermocouple(sckPin, csPin, soPin);
///////////////////////////////////////////////////////////////
#include <SD.h>
int UVOUT = A5; //Output from the sensor
int REF_3V3 = A4; //3.3V power on the Arduino board
////////////////////////////////
File myFile; //creando el archivo del data

void setup(){
Serial.begin(9600);// inicializacion de monitor serial
lcd.begin (16,2); // Inicializar el display con 16 caracteres 2 lineas
lcd.setBacklightPin(3,POSITIVE); // puerto P3 de PCF8574 como positivo
lcd.setBacklight(HIGH);
dht1.begin (); // inicializacion de sensor
dht2.begin (); // inicializacion de sensor

lcd.print("MAX6675");
lcd.setCursor(0,1);
lcd.print("Thermocouple");

Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println(" MAX6675");

delay(3000);// give time to user to read the display at the beginning
pinMode(UVOUT, INPUT);
pinMode(REF_3V3, INPUT);

// Serial.println("radiacion uv");

Serial.begin (9600); // inicializacion de monitor serial
lcd.begin(16,2);// Indicamos medidas de LCD

Wire.begin();
rtc.begin();
//Si quitamos el comentario de la linea siguiente, se ajusta la hora y la fecha con la del ordenador
//RTC.adjust(DateTime(_DATE, _TIME));

SD.begin(chipSelect);
myFile=SD.open("DATA.txt", FILE_WRITE);

myFile.println("FECHA, HORA, TEMPERATURA1ºC, HUMEDAD1 %, TEMPERATURA2ºC, HUMEDAD2 %, TEMPERATURA3°C, LONG ONDλ UV, INTENSIDAD UV");

myFile.close();
}
void loop() {

DateTime now = rtc.now();
hora=(now.hour(),DEC);
minutos=(now.minute(),DEC);
segundos=(now.second(),DEC);

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

/////////////////////////////////////////////////////////////////////////////
TEMPERATURA1 = dht1.readTemperature (); // obtencion de valor de temperatura
HUMEDAD1 = dht1.readHumidity (); // obtencion de valor de humedad
Serial.print ("T1: "); // escritura en monitor serial de los valores
Serial.print (TEMPERATURA1);
Serial.print (" H1: ");
Serial.println (HUMEDAD1);
///////////////////////////////////////////////////
lcd.setCursor(0,0);
lcd.print("T1:");
lcd.print(TEMPERATURA1);//Escribe la temperatura
lcd.print("C");

lcd.setCursor(0,1);//Posiciona la primera letra despues del segmento 5 en linea 1
lcd.print("H1: ");
lcd.print(HUMEDAD1);//Escribe la humedad
lcd.print("%");
delay (2000);

////////////////////////////////////////////

TEMPERATURA2 = dht2.readTemperature (); // obtencion de valor de temperatura
HUMEDAD2 = dht2.readHumidity (); // obtencion de valor de humedad
Serial.print (" T2: "); // escritura en monitor serial de los valores
Serial.print (TEMPERATURA2);
Serial.print (" H2: ");
Serial.println (HUMEDAD2);

///////////////////////////////////////////////////
lcd.setCursor(0,0);
lcd.print("T2:");
lcd.print(TEMPERATURA2);//Escribe la temperatura
lcd.print("C");

lcd.setCursor(0,1);//Posiciona la primera letra despues del segmento 5 en linea 1
lcd.print("H2: ");
lcd.print(HUMEDAD2);//Escribe la humedad
lcd.print("%");
delay (2000);
////////////////////////////////////////////
//visualizacion de valores de termocuple en monitor serie y pantalla LCD

//////// thermocouple/////

lcd.setCursor(0,0);
Serial.print("T3 = ");
Serial.println(thermocouple.readCelsius());
//Serial.print("F = ");
// Serial.println(thermocouple.readFahrenheit());

lcd.clear();// clear previous values from screen
lcd.setCursor(0,0);// set cursor at character 0, line 0
lcd.print("Temperature 3");

lcd.setCursor(0,1);// set cursor at character 0, line 1
lcd.print(thermocouple.readCelsius());
lcd.setCursor(5,1);// set cursor at character 9, line 1
lcd.print((char)223);
lcd.setCursor(6,1);// set cursor at character 9, line 1
lcd.print("C");

//lcd.setCursor(7,1);// set cursor at character 9, line 1
//lcd.print(" ");
//lcd.setCursor(8,1);// set cursor at character 9, line 1
//lcd.print(thermocouple.readFahrenheit()); // print temperature in ahrenheit
//lcd.setCursor(14,1);// set cursor at character 9, line 1
//lcd.print((char)223);
//lcd.setCursor(15,1);// set cursor at character 9, line 1
//lcd.print("F");

delay(2000);

///////////////////////////////////////////////////

//////////////////////////////////
lcd.clear();// clear previous values from screen
int uvLevel = averageAnalogRead(UVOUT);
int refLevel = averageAnalogRead(REF_3V3);

//Use the 3.3V power pin as a reference to get a very accurate output value from sensor
float outputVoltage = 3.3 / refLevel * uvLevel;

float uvIntensity = mapfloat(outputVoltage, 0.99, 2.8, 0.0, 15.0); //Convert the voltage to a UV intensity level

Serial.print("output: ");
Serial.print(refLevel);

Serial.print("ML8511output: ");
Serial.print(uvLevel);

Serial.print(" / ML8511 voltage: ");
Serial.print(outputVoltage);

Serial.print(" / UVIntensity (mW/cm^2): ");
Serial.print(uvIntensity);

lcd.setCursor(0, 0);
lcd.print("UV Ray Intensity");
lcd.setCursor(0, 1);
lcd.print(uvIntensity);
lcd.print(" mW/cm^2");
Serial.println();
delay (2000);
lcd.clear();

myFile = SD.open("DATA.txt", FILE_WRITE);
//Serial.println("abierto sin errores");

if ( (millis() - tiempo) > INTERVALO ) {
// Entonces lees la hora y grabas datos
tiempo = millis();

myFile.print(now.year(), DEC);
myFile.print('/');
myFile.print(now.month(), DEC);
myFile.print('/');
myFile.print(now.day(), DEC);
myFile.print(',');
myFile.print(now.hour(), DEC);
myFile.print(':');
myFile.print(now.minute(), DEC);
myFile.print(':');
myFile.print(now.second(), DEC);
myFile.print(",");
myFile.print(TEMPERATURA1);
myFile.print(",");
myFile.print(HUMEDAD1);
myFile.print(",");
myFile.print(TEMPERATURA2);
myFile.print(",");
myFile.print(HUMEDAD2);
myFile.print(",");
myFile.print("C = ");
myFile.print(thermocouple.readCelsius());
myFile.print(",");
myFile.print("nm: ");
myFile.print(uvLevel);
myFile.print(",");
// myFile.print(",ML8511 voltage: ");
//myFile.print(outputVoltage);
myFile.print("(mW/cm^2): ");
myFile.println(uvIntensity);
myFile.close();
}

lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ElectroUNI");
delay (2000);
lcd.clear();
}

// Toma un promedio de lecturas en un pin dado
// Devuelve el promedio
int averageAnalogRead(int pinToRead)
{
byte numberOfReadings = 8;
unsigned int runningValue = 0;

for(int x = 0 ; x < numberOfReadings ; x++)
runningValue += analogRead(pinToRead);
runningValue /= numberOfReadings;

return(runningValue);
}

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max)
{
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

Creo haberte pedido que postees el código de acuerdo a laso normas, eso no esta como corresponde, asi que tal como hiciste en el primer hilo, edita el segundo y coloca la etiqueta para que se visualice el código.
Lee las Normas del foro.