Gpsdaten auf Sd karte loggen


moinsen!
ich bin relativ neu im umgang mit den arduino und hab ein paar fragen.
code: [select]
#include <nmea.h>
#include <softwareserial.h>

#define rxpin 9
#define txpin 3
// create gps data connection gprmc sentence type
nmea gps(gprmc);
softwareserial portone(rxpin, txpin);
void setup() {
  serial.begin(9600);
  portone.begin(9600);
}
string datastring = "";
void loop() {
  if (portone.available() > 0 ) {
    // read incoming character gps
    char c = portone.read();

    // check if character completes valid gps sentence
    if (gps.decode(c)) {
      // check if gps positioning active
      datastring = gps.sentence();
      delay(10);
      serial.print(datastring);
    }
  }
}


ausgabe ist wunderbar:
$gprmc,095453.00,v,,,,,,,270412,,,n*71$gprmc,095453.99,v,,,,,,,270412,,,n*71$gprmc,095455.00,v,,,,,,,270412,,,n*77$gprmc,095456.00,v,,,,,,,270412,,,n*74$gprmc,095456.99,v,,,,,,,270412,,,n*74$gprmc,095458.00,v,,,,,,,270412,,,n*7a$gprmc,095459.00,v,,,,,,,270412,,,n*7b$gprmc,095459.99,v,,,,,,,270412,,,n*7b$gprmc,095501.00,v,,,,,,,270412,,,n*77$gprmc,095502.00,v,,,,,,,270412,,,n*74$gprmc,095502.99,v,,,,,,,270412,,,n*74$gprmc,095504.00,v,,,,,,,270412,,,n*72$gprmc,095505.00,v,,,,,,,270412,,,n*73$gprmc,095505.99,v,,,,,,,270412,,,n*73$gprmc,095507.00,v,,,,,,,270412,,,n*71

ich befinde mich im raum, deswegen nur halbe gps daten...
jetzt möchte ich diese daten auf sd-karte wegspeichern.
code: [select]

#include <nmea.h>
#include <softwareserial.h>
#include <sd.h>

#define rxpin 9
#define txpin 3
// create gps data connection gprmc sentence type
nmea gps(gprmc);
softwareserial portone(rxpin, txpin);
const int d1_pin = a1;
const int d2_pin = 4;
const int chipselect = 10;
void setup() {
  pinmode(d1_pin, output);
  pinmode(d2_pin, output);
  serial.begin(9600);
  portone.begin(9600);
  serial.print("initializing sd card...");
 
  pinmode(10, output);
   digitalwrite(d1_pin, high);
  if (!sd.begin(chipselect)) {
    digitalwrite(d1_pin, low);
    serial.println("initialization failed!");
    return;
  }
  serial.println("initialization done.");
}

void err_out(int err_code){
  digitalwrite(d1_pin, high);
  digitalwrite(d2_pin, low);
  while(true){
    delay(1000);
    for(int i=0; < err_code; i++){
      digitalwrite(d2_pin, high);
      delay(200);
      digitalwrite(d2_pin, low);
      delay(200);
    }
  }
}
unsigned long count = 0;
string datastring = "";
void loop() {
  if (portone.available() > 0 ) {
    // read incoming character gps
    char c = portone.read();

    // check if character completes valid gps sentence
    if (gps.decode(c)) {
      // check if gps positioning active
      datastring = gps.sentence();
      delay(10);
      serial.print(datastring);
      file myfile = sd.open("test.txt", file_write);
     
      if (myfile) {
    digitalwrite(d1_pin, low);
    digitalwrite(d2_pin, high);
    delay(30);
    serial.println("writing test.txt...");
    myfile.println(datastring);
    // close file:
    myfile.close();
    count++;
  }
  else {
    // if file didn't open, print error:
    serial.println("error opening test.txt");
    err_out(1);
  }
 
    }
  }
  if(count == 10){
    while(1) delay(1000); // stop already
  }
}

ausgabe :
initializing sd card...  initialization done. 
initializing sd card...  initialization done. 
initializing sd card...  initialization done. 
initializing sd card...  initialization done. 
dabei dachte ich, dass void setup() immer nur genau einmal ausgeführt wird. wie kann es dann, dass er das void setup() als schleife durchläuft?
hoffe ihr könnt mir helfen..

dieses sd karten breadboard benutze ich:
http://www.olimex.com/dev/other/mod-sdmmc/mod-sd_mmc.pdf

sieht aus, als würde dein arduino resets bekommen / ausführen, denn dann wird jedesmal wieder die setup() aufgerufen.
wie schnell hintereinander kommen denn die ausgaben?


Arduino Forum > International > Deutsch (Moderator: uwefed) > Gpsdaten auf Sd karte loggen


arduino

Comments

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial