Buenas tardes intento guardar los datos de unos sensores que obtengo en un arduino Uno y despues se los envio a un arduino Mega para guardarlos en la una memoria SD, ésta se encuentra en el SHIELD de spark fun, sin embargo al momento de guardar los datos en la SD tengo problemas no puedo guardarlos correctamente ya que pareciera que se sobre escribe los valores, utilizo la función millis para hacer un delay de la lectura, si este delay es grande guarda los datos correctamenta pero si el dalay es menor se sobre escriben y quiero tener un t_delay de 10 milisengudos.
Es posible?
Codigo para el arduino UNO, el que envía
String dataString;
unsigned long tiempo=0;
unsigned long t_Actualizado=0;
unsigned long t_delay = 250;
String string;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
// see if the card is present and can be initialized:
Serial.println("card initialized.");
}
void loop()
{
dataString="";
tiempo=millis();
// read three sensors and append to the string:
for (int analogPin = 0; analogPin < 3; analogPin++) {
int sensor = analogRead(analogPin);
dataString += String(sensor);
if (analogPin < 2) {
dataString += ",";
}
}
if (tiempo> t_Actualizado+ t_delay)
{
t_Actualizado=tiempo;
Serial.println(dataString);
}
}
Código en arduino MEGA
#include <SPI.h>
#include <SD.h>
char inChar;
String string;
// Chip Select pin is tied to pin 9 on the SparkFun SD Card Shield
const int chipSelect = 9;
void setup() {
Serial.begin(9600);
Serial3.begin(9600);
string.reserve(1200);
Serial.print("Initializing SD card...");
// make sure that the default chip select pin is set to
// output, even if you don't use it:
pinMode(chipSelect, OUTPUT);
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
}
void loop() {
string="";
if (Serial3.available()){
File dataFile = SD.open("datas2.TXT", FILE_WRITE);
//Lectura de caracteres
inChar = Serial3.read();
//Suma de caracteres en variable string
string+=inChar;
Serial.print(string);
dataFile.print(string);
Serial3.flush();//
//
dataFile.close();
}
}
Agradeceria que me pudiera ayudar porque