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