DIY passive acoustic 8bit with arduino UNO No data on SD

Hi There!
my problem is that no data is being writen in the arduino, while plugged with a 9v battery, Is here any library that i need to install here is my code.
My project is to emulate a passive acoustic recorder with 8bit.

#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include <RTClib.h>
#include <LowPower.h>

const int chipSelect = 10;   // Pin de selección para el módulo SD
const int mic1 = A0;         // Primer micrófono en el pin A0
const int mic2 = A1;         // Segundo micrófono en el pin A1

unsigned long recordingStartTime = 0;
const unsigned long recordingInterval = 120000;  // Graba cada 2 min
const unsigned long recordingDuration = 60000;  // Graba durante 1 min

RTC_DS3231 rtc;  // Objeto para interactuar con el módulo RTC
File audioFile;

void setup() {
  Serial.begin(9600);
  
  // Inicializa la tarjeta SD
  if (!SD.begin(chipSelect)) {
    Serial.println("No se pudo inicializar la tarjeta SD");
    return;
  }
  Serial.println("Tarjeta SD inicializada correctamente");

  pinMode(mic1, INPUT);
  pinMode(mic2, INPUT);

  // Inicializa el RTC
  if (!rtc.begin()) {
    Serial.println("No se pudo encontrar el módulo RTC");
    while (1);
  }
  
  // Si el RTC pierde energía, ajusta la hora. Elimina esta línea si el RTC ya está ajustado.
  if (rtc.lostPower()) {
    Serial.println("RTC perdió energía, ajustando a la fecha y hora predeterminadas.");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  recordingStartTime = millis();
}

void loop() {
  // Obtenemos la hora actual desde el RTC
  DateTime now = rtc.now();
  
  // Comprueba si estamos entre las 6 p.m. y las 6 a.m.
  if ((now.hour() >= 11.10|| now.hour() < 11.30)) { 
    // Si estamos en el rango de tiempo de grabación, procede
    unsigned long currentTime = millis();
    
    // Comprueba si es el momento de grabar
    if (currentTime - recordingStartTime >= recordingInterval) {
      // Inicia la grabación durante el tiempo especificado
      startRecording();
      
      // Espera el tiempo de grabación
      delay(recordingDuration);
      
      // Detiene la grabación
      stopRecording();
      
      // Actualiza el tiempo de inicio de grabación
      recordingStartTime = millis();
    }
  } else {
    // Si estamos fuera del rango de grabación (6 a.m. a 6 p.m.), entra en modo de bajo consumo
    enterLowPowerMode();
  }
}

void startRecording() {
  Serial.println("Iniciando grabación...");
  
  // Crea un nombre de archivo basado en el tiempo actual
  String fileName = "AUDIO" + String(millis()) + ".wav";
  
  // Abre el archivo WAV en la tarjeta SD para escribir
  audioFile = SD.open(fileName, FILE_WRITE);
  
  if (audioFile) {
    // Escribe el encabezado WAV
    writeWAVHeader(audioFile, 0, 16000, 2); // 16kHz, 2 canales (micrófonos)
    unsigned long startTime = millis();
    
    while (millis() - startTime < recordingDuration) {
      int mic1Value = analogRead(mic1);  // Lee del primer micrófono
      int mic2Value = analogRead(mic2);  // Lee del segundo micrófono
      
      // Convierte los valores a formato de 8 bits (0-255)
      byte audioSample1 = map(mic1Value, 0, 1023, 0, 255);
      byte audioSample2 = map(mic2Value, 0, 1023, 0, 255);
      
      // Escribe los datos de ambos micrófonos en el archivo WAV
      audioFile.write(audioSample1);
      audioFile.write(audioSample2);
      
      // Ajusta la frecuencia de muestreo (en este caso, ~16kHz)
      delayMicroseconds(62);
    }
  } else {
    Serial.println("Error al abrir el archivo para grabar");
  }
}

void stopRecording() {
  // Cierra el archivo una vez que la grabación termina
  if (audioFile) {
    unsigned long fileSize = audioFile.size();
    audioFile.seek(0);  // Vuelve al inicio del archivo
    writeWAVHeader(audioFile, fileSize - 8, 16000, 2);  // Actualiza el encabezado WAV con el tamaño del archivo
    audioFile.close();
    Serial.println("Grabación finalizada");
  }
}

// Función para escribir el encabezado WAV
void writeWAVHeader(File &file, uint32_t dataSize, uint16_t sampleRate, uint8_t channels) {
  // Encabezado estándar de un archivo WAV
  file.write("RIFF");
  file.write((byte*)&dataSize, 4);  // Tamaño de datos del archivo
  file.write("WAVE");
  
  // Formato
  file.write("fmt ");
  uint32_t fmtChunkSize = 16;
  file.write((byte*)&fmtChunkSize, 4);
  
  uint16_t audioFormat = 1;  // PCM
  file.write((byte*)&audioFormat, 2);
  file.write((byte*)&channels, 2);
  file.write((byte*)&sampleRate, 4);
  
  uint32_t byteRate = sampleRate * channels * 1;  // 8 bits por muestra
  file.write((byte*)&byteRate, 4);
  
  uint16_t blockAlign = channels * 1;
  file.write((byte*)&blockAlign, 2);
  
  uint16_t bitsPerSample = 8;
  file.write((byte*)&bitsPerSample, 2);
  
  // Datos
  file.write("data");
  file.write((byte*)&dataSize, 4);
}

// Función para entrar en modo de bajo consumo
void enterLowPowerMode() {
  Serial.println("Entrando en modo de bajo consumo...");
  
  // Suspensión profunda durante 8 segundos
  for (int i = 0; i < (recordingInterval / 8000); i++) {
    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
  }

  Serial.println("Saliendo del modo de bajo consumo...");
}


Who wrote this code?

is it that bad?

I didn't say it was bad, I didn't say it was good. I asked who wrote it.

well i have no diclosure about it, i'm a bio student so no knowledge of c++, i did the worst thing you can do, that is ChatGPT helped me with that

And you just learned why you can't use a generative AI to do something that you're not able to do yourself. Because you won't be able to tell when it's lying to you and has just made something up that doesn't work, but looks plausible.

And no, the worst thing you could do was to try and pass it off as "my code".

Which Arduino are you using? An Uno R3 or an Uno R4 Minima?

Arduino R3 clone

i know i know, can you try to fix it? i mean some electronic partners have reviwed it and said it was fine

Topic moved to a better category. The Uno R4 categories are for the Uno R4 Minima and Arduino R4 WiFi.

this is the one i'm using

They don't know either. There are many problems in the code, and due to the limitations of the Arduino Uno R3, it cannot be made to work as expected.