Gpsdaten auf Sd karte loggen
moinsen!
ich bin relativ neu im umgang mit den arduino und hab ein paar fragen.
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.
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
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?
wie schnell hintereinander kommen denn die ausgaben?
Arduino Forum > International > Deutsch (Moderator: uwefed) > Gpsdaten auf Sd karte loggen
arduino
Comments
Post a Comment