Hola necesito ayuda
Tengo una placa Arduino UNO conectada a 4 sensores MQ4 para lectura de metano y pantalla LCD que muestra los valores de los sensores.
Tengo dos errores persistentes:
- lo primero es que la memoria SD se vuelva y no abre el archivo.
- Funciona y no guarda la información o la guarda incompleta.
Yo requiero registrar la producción de metano por 24 horas, pero no he podido hacerlo debido a esto.
No se, si el error esta en el código por que funciona bien cuando lo compilo, pero al momento de dejar el ensayo midiendo presenta error.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 or 0x3f for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);
int LED = 13; // Use the onboard Uno LED
#include <SPI.h>
#include <SD.h>
#include <Time.h>
#include <TimeLib.h>
File archivo;
int periodo = 2000;
unsigned long tiempoAnterior = 0;
int sensorValue;
int sensorValue2;
int sensorValue3;
int sensorValue4;
//int sensorValue5;
void setup()
{
lcd.init();
lcd.backlight();
pinMode(LED, OUTPUT);
pinMode(A0, INPUT);
Serial.begin(9600);
setTime(00,00,01,29,07,2023);
Serial.print(F("Iniciando SD ..."));
if (!SD.begin(4))
{
Serial.println(F("Error al iniciar"));
return;
}
Serial.println(F("Iniciado correctamente"));
}
void loop() {
time_t t = now();
if (millis() - tiempoAnterior >= periodo) {
archivo = SD.open("METANO.XLS", FILE_WRITE);
if (archivo) {
sensorValue = analogRead(0);
Serial.println(sensorValue, DEC);
sensorValue2 = analogRead(1);
Serial.println(sensorValue2, DEC);
sensorValue3 = analogRead(2);
Serial.println(sensorValue3, DEC);
sensorValue4 = analogRead(3);
Serial.println(sensorValue4, DEC);
//sensorValue5= analogRead(4);
//Serial.println(sensorValue5, DEC);
// Escribir en una sola línea con valores separados por comas
archivo.print(sensorValue);
archivo.print(",");
archivo.print(sensorValue2);
archivo.print(",");
archivo.print(sensorValue3);
archivo.print(",");
archivo.print(sensorValue4);
archivo.print(",");
//archivo.print(sensorValue5);
//archivo.print(",");
archivo.print(hour(t));
archivo.print(":");
archivo.print(minute(t));
archivo.print(":");
archivo.println(second(t));
archivo.close();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CH4=");
lcd.print("A0:");
lcd.print(sensorValue);
lcd.print(",");
lcd.print("A1:");
lcd.print(sensorValue2);
lcd.print(",");
lcd.setCursor(0,1);
lcd.print("A2:");
lcd.print(sensorValue3);
lcd.print(",");
lcd.print("A3:");
lcd.print(sensorValue3);
}
else {
Serial.print("Error al abrir el archivo. Código de error: ");
}
tiempoAnterior = millis();
}
}
Este es el código
y este es uno de los problemas al no guardar la información:
9ÿÿÿÿÿÿø5,?¿ÿÿÿÿÿÿú?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ97,1:34:1
La verdad es que no soy experto en programación, soy estudiante universitario y estoy incursionando en el arduino como parte de mi trabajo de grado.