tengo esta duda, estoy trabajando con dos sensores cada uno registra un valor a los dos segundos y lo imprime al final de imprimir cinco valores saca su media y vuelve a hacer lo mismo el problema es que lo hace primero con un sensor y después con el otro y a mi me interesa que los dos valores salgan al mismo tiempo en el mismo renglón. saludos espero puedan ayudarme. anexo el código en un txt.
#include <Wire.h>
#include "RTClib.h"
#include <SPI.h>
RTC_DS3231 RTC;
#include <SD.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 3, 2 , 10); //indicamos pines de la pantalla lcd
// Variables y constantes
File myFile;
float Sensor1;
float Presion1;
float Sensor2;
float Presion2;
const int NMEDIDAS=5;// numero de medidas para calibrar
const int NMEDIDAS2=5;
float media;
float media2;
void setup () {
lcd.begin(16,2);// inicio pantalla lcd
Wire.begin();// inicio puerto I2C
RTC.begin();// inicia comunicación con el reloj tiempo real (RTC)
Serial.begin(9600);
Serial.print("Iniciando SD o MicroSD . . . ");//imprime en pantalla arduino que se ha iniciado modulo SD
if (!SD.begin(4)) {
Serial.println("No se ha podido inicializar SD o MicroSD");//imprime en el siguiente renglon cuando no hay comunicacion entre el modulo sd y la tarjeta
}
Serial.println("Inicializacion SD o MicroSD exitosa");
if(!SD.exists("datalog1.csv")) {
myFile = SD.open("datalog1.csv", FILE_WRITE);
if (myFile) {
Serial.println("Archivo nuevo, Escribiendo encabezado(fila1)");
myFile.close();
} else {
Serial.println("Error al crear el archivo datalog.csv");
}
}
}
void loop() {
//inicializacion de media,mediana y moda al comenzar el ciclo de medicion.
media=0;
//comienzo del ciclo de medicion
for(int i=0;i<NMEDIDAS;i++)
{
Sensor1 = analogRead(A0);
Presion1 = Sensor1*0.02;
Serial.print("Sensor1:");
Serial.print(Presion1,3);
Serial.print(' ');
Serial.print("m.c.a");
Serial.println(" ");
//vamos preparando la media
media+=Presion1;
delay(2000);
}
//inicializacion de media al comenzar el ciclo de medicion.
media2=0;
//comienzo del ciclo de medicion
for(int l=0;l<NMEDIDAS2;l++)
{
Sensor2 = analogRead(A1);
Presion2 = Sensor2*0.02;
//vamos preparando la media
media2+=Presion2;
Serial.print("Sensor2:");
Serial.print(Presion2,3);
Serial.print(' ');
Serial.println("m.c.a");
delay(2000);
}
myFile = SD.open("datalog1.csv", FILE_WRITE);//abrimos el arcchivo
if (myFile) {
Serial.print("Escribiendo SD: ");
DateTime now = RTC.now();//Obtiene la fecha y hora del RTC
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(" ");
float resultado=media/NMEDIDAS;
myFile.print(resultado); //para media1
myFile.print(" ");
float resultado2=media2/NMEDIDAS2;
myFile.print(resultado2); //para media2
myFile.close(); //cerramos el archivo
Serial.print(now.year(), DEC); // Año
Serial.print('/');
Serial.print(now.month(), DEC); // Mes
Serial.print('/');
Serial.print(now.day(), DEC); // Dia
Serial.print(' ');
Serial.print(now.hour(), DEC); // Horas
Serial.print(':');
Serial.print(now.minute(), DEC); // Minutos
Serial.print(':');
Serial.print(now.second(), DEC); // Segundos
Serial.print(' ');
} else {
// if the file didn't open, print an error:
Serial.println("Error al abrir el archivo");
}
DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC
Serial.print("MEDIA:");
float resultado=media/NMEDIDAS;
Serial.print(resultado,3);
Serial.print(' ');
Serial.print("m.c.a.");
Serial.print(' ');
Serial.print(" ");
Serial.print("MEDIA2:");
float resultado2=media2/NMEDIDAS2;
Serial.print(resultado2,3);
Serial.print(' ');
Serial.print("m.c.a.");
Serial.println(' ');
lcd.clear();
lcd.setCursor(0,0);
lcd.print("P1:");
lcd.print (resultado,3);
lcd.setCursor(8,0);
lcd.print("P2:");
lcd.print (resultado2,3);
lcd.setCursor(0,1);
lcd.print("m.c.a. ");
lcd.print(now.hour(), DEC); //imprime hora
lcd.print(':');
lcd.print(now.minute(), DEC); //imprime minutos
lcd.print(':');
lcd.print(now.second(), DEC); //imprime segundos
return;
}
codigoos sensores.txt (4.49 KB)