Problema de comunicación de un sensor de sonido

Hola a todo el mundo.
Tengo un problema con este código que trata de guardar los datos de un sensor de sonido.
Adjunto el código aquí;

#include <SD.h>
const int sensorPIN = A0;
const int sensorPIN1 = A1;
const int sampleWindow = 5000; // Tiempo ejemplo (50 mS = 20Hz)

File logFile;

void setup()
{
  Serial.begin(9600);
  Serial.print(F("Iniciando SD ..."));
  if (!SD.begin(9))
  {
    Serial.println(F("Error al iniciar"));
    return;
  }
  Serial.println(F("Iniciado correctamente"));
}

void loop()
{
  derecha();
  izquierda();
  tarjetasd();
}

void derecha()
{
  unsigned long startMillis = millis();

  unsigned int signalMax = 0;
  unsigned int signalMin = 1024;

  // Recopilar durante la ventana
  unsigned int sample;
  while (millis() - startMillis < sampleWindow)
  {
    sample = analogRead(sensorPIN);
    if (sample < 1024)
    {
      if (sample > signalMax)
      {
        signalMax = sample;  // Actualizar máximo
      }
      else if (sample < signalMin)
      {
        signalMin = sample;  // Actualizar mínimo
      }
    }
  }
  unsigned int peakToPeak = signalMax - signalMin;  // Amplitud del sonido
  double volts = (peakToPeak * 5.0) / 1024;  // Convertir a tensión
  Serial.println(volts);
}

void izquierda () {
  unsigned long startMillis = millis();

  unsigned int signalMax = 0;
  unsigned int signalMin = 1024;

  // Recopilar durante la ventana
  unsigned int sample;
  while (millis() - startMillis < sampleWindow)
  {
    sample = analogRead(sensorPIN1);
    if (sample < 1024)
    {
      if (sample > signalMax)
      {
        signalMax = sample;  // Actualizar máximo
      }
      else if (sample < signalMin)
      {
        signalMin = sample;  // Actualizar mínimo
      }
    }
  }
  unsigned int peakToPeak = signalMax - signalMin;  // Amplitud del sonido
  double volts1 = (peakToPeak * 5.0) / 1024;  // Convertir a tensión
  Serial.println(volts1);
}

void tarjetasd() {
  logFile = SD.open("datalog.txt", FILE_WRITE);

  if (logFile) {
    logFile.print("Time(ms)=");
    logFile.print(millis());
    logFile.print(", Derecha=");
    logFile.print (volts);
    logFile.print(", Izquierda=");
    logFile.println(volts1);

    logFile.close();

  }
  else {
    Serial.println("Error al abrir el archivo");
  }
  delay(500);
}

El punto es que en esta parte del código ;

void tarjetasd() {
  logFile = SD.open("datalog.txt", FILE_WRITE);

  if (logFile) {
    logFile.print("Time(ms)=");
    logFile.print(millis());
    logFile.print(", Derecha=");
    logFile.print (volts);
    logFile.print(", Izquierda=");
    logFile.println(volts1);

    logFile.close();

  }
  else {
    Serial.println("Error al abrir el archivo");
  }
  delay(500);
}

me da error en la parte de ''volts'' y ''volts1'', se que tengo que hacer una variable global pero me sigue dando error. El punto es que no se como comunicarlo bien.

Muchas gracias de antemano y perdonar las molestias.
Un cordial saludo

Solo tiene estas variables definidas dentro de las funciones derecha() e izquierda(), por lo que no puede acceder a ellas en un tarjetasd().
Mueva sus declaraciones antes de la setup(), haciéndolas globales, y el problema se resolverá

Hola buenas @b707 , antes que nada gracias por responder. Mi duda es que no se como hacerlas globales, ¿podrías decirme un ejemplo?. Siento mucho la molestia.
Un saludo

Agregue esta línea antes de la setup()

En los procedimientos de la derecha() y la izquierda() en las líneas donde se calculan estas variables, elimine el tipo de la variable al principio de la línea

¡Funciono! Muchas gracias @b707