ARDUINO UNO O MEGA CON ACELEROMETRO

Hola,
Busco hacer un programa que me muestre los grados de un acelerometro,
he buscado mucha información, pero donde me muestan un problema, me pierden en otro jaja
1.Encontré un codigo para

  1. Encontre este código, que lo que se hace es en el que se guarda como texto en un .txt los datos por medio de una cadena y eso,
    drmaker.es
    Pero no estoy seguro como unirlo con el código que ya tengo del acelerometro:
#include <math.h>

void setup () {

  // Este circuito es capaz de funcionar con 5V, 
  // sin embargo internamente funciona con 3.3V lo cual utilizaremos como 
  // referencia para el convertidor Análogo-> Digital. 
  // Esto nos tiene tener mayor precisión a la hora de leer
  analogReference (EXTERNAL);
  Serial.begin (9600);
}


// Definimos algunas variables para almacenar 
// los valores de los componentes de las fuerzas en
// cada uno de los ejes del acelerómetro.
int xVal = 0;
int yVal = 0;
int zVal = 0;

// Un par de variables de tipo flotante doble a la altura del ángulo 
// en el que se encuentra el acelerómetro.

doble ánguloYZ = 0;
doble ángulo XZ = 0;

// Vamos a utilizar el puerto serial para escribir los valores.
// Luego, en el loop principal tenemos que leer los valores análogos y hacer un pequeño 
// ajuste utilizando la función map (). El problema es que el convertidor análogo-digital
// tiene un rango que va desde 0 a 1023, si utilizáramos la función arco tangente usando 
// estos valores nos mentiría ya que los componentes de la fuerza solo tendrían valores 
// positivos y por lo tanto valores erróneos.

void loop () {

  // Leer Valores:
  // lo primero que hacemos es leer los valores que se encuentran en las entradas análogas.
xVal = analogRead (0);
yVal = analogRead (1);
zVal = analogRead (2);

// Luego utilizamos la función mapa para generar un rango más 
// adecuado para los valores de entrada.

xVal = mapa (xVal, 0, 1023, -500, 500);
yVal = mapa (yVal, 0, 1023, -500, 500);
zVal = mapa (zVal, 0, 1023, -500, 500);

// Por último aplicamos las sencillas funciones trigonométricas 
// para calcular el ángulo correspondiente.

angleYZ = atan ((doble) yVal / (doble) zVal);
ánguloYZ = ángulo YZ * (57.2958);
angleXZ = atan ((doble) xVal / (doble) zVal);
angleXZ = angleXZ * (57.2958);

// Una vez calculados los ángulos simplemente los imprimimos en el 
// puerto serial para poder leerlos desde la computadora.

  Serial.write ("yz:");
  Serial.print (angleYZ);
  Serial.write ("\ n");

  Serial.write ("xz:");
  Serial.print (angleXZ);
  Serial.write ("\ n");
  retraso (100); // CADA CUANTO NECESITAN EL ESCANEO ????? RETRASO DEMORA
}

Porque el arduino no estará conectado siempre a un pc, y necesito que el solito inicie a lo que se energize,

//Se incluye la librería <SD.h>
#include <SD.h>

File Archivo;

void setup() {

  //Se esablece comunicación con el monitor serial para la comprobación de la
  //carga de datos.
  Serial.begin(9600);

  //Se muestra por pantalla que se va a iniciar la comunicación con la SD
  Serial.print(“Comenzando la comunicación con la tarjeta SD”);

  //Se establece como salida el pin correspondiente a SS.
  pinMode(10, OUTPUT);

  //Se muestra por el monitor si la comunicación se ha establecido correctamente
  //o ha habido algún tipo de error.
  if (!SD.begin(10)) {

    Serial.println(“Se ha producido un fallo al iniciar la comunicación”);
    return;
  }
  Serial.println(“Se ha iniciado la comunicación correctamente”);

  /* ESCRIBIENDO DATOS EN LA MEMORIA SD DE ARDUINO */

  //Se abre el documento sobre el que se va a leer y escribir.
  Archivo = SD.open(“datos.txt”, FILE_WRITE);

  //Se comprueba que el archivo se ha abierto correctamente y se procede a
  //escribir en él.
  if (Archivo) {

    //Se escribe información en el documento de texto datos.txt.
    Archivo.println(“Esto es lo que se está escribiendo en el archivo”);

    //Se cierra el archivo para almacenar los datos.
    Archivo.close();

    //Se muestra por el monitor que los datos se han almacenado correctamente.
    Serial.println(“Todos los datos fueron almacenados”);
  }

  //En caso de que haya habido problemas abriendo datos.txt, se muestra por pantalla.
  else {

    Serial.println(“El archivo datos.txt no se abrió correctamente”);
  }

  /* FIN DE LA ESCRITURA DE DATOS EN LA MEMORIA SD DE ARDUINO */

  /* LEYENDO DATOS EN LA MEMORIA SD DE ARDUINO */

  //Se vuelve a abrir el fichero, esta vez para leer los datos escritos.
  Archivo = SD.open(“datos.txt”);

  //Si el archivo se ha abierto correctamente se muestran los datos.
  if (Archivo) {

    //Se muestra por el monitor que la información que va a aparecer es la del
    //archivo datos.txt.
    Serial.println(“Información contenida en datos.txt: ”);

    //Se implementa un bucle que recorrerá el archivo hasta que no encuentre más
    //información (Archivo.available()==FALSE).
    while (Archivo.available()) {

      //Se escribe la información que ha sido leída del archivo.
      Serial.write(Archivo.read());
    }

    //Si todo ha ido bien cierra el archivo para no perder datos.
    Archivo.close();
  }

  //En caso de que haya habido problemas abriendo datos.txt, se muestra por pantalla.
  else {

    Serial.println(“El archivo datos.txt no se abrió correctamente”);
  }

}

void loop()
{
  //En este ejemplo el bucle loop() no realiza ninguna acción ya que toda la información
  //fue gestionada en el setup.
  //En caso de que se desee almacenar la información obtenida de algún sensor, la escritura
  //debería realizarse en el loop().
}

y Entonces, agradecería si me pueden ayudar con el codigo, debe ser sencillo y eso,
Requerimientos que me pidieron:

1.Que no dependa de un pc, (ya le tengo el shield de sd al arduino)
2.Que sea compatible con Arduino MEGA
3.Que muestre los datos del acelerometro en este formato AÑADIENDO hora:min:seg ----> : HH:MM:SS Valor en x: Valor en Y: Valor en z:
4.Que guarde el archivo de texto con los datos suministrados
5. si es posible, crear un reset, que al activar tal pin, que borre los datos obtenidos hasta el momento
6. Preferiblemente trabajar con Arduino MEGA

De antemano muchas gracias!

ACELEROM.ino (2.32 KB)

Hola,

Te dejo el fichero con las modificaciones que querias.

Un saludo.

ACELEROM.ino (5.05 KB)