Problem bei Kombination von GPS shield und ADXL345

OP #4604256
Lesenswert?
• ▲
▼
Hallo Community,

ich bin noch Arduino Neuling und versuche gerade 2 Sketches 
zusammenzufügen.
Leider scheiter ich hierbei.

Und zwar soll im Seriellen Monitor die GPS und Beschleunigungsdaten 
angezeigt werden. (kompletter Sketch von sketch_GPS, 
sketch_Beschleunigungssensor und der Zusammenfassung im Anhang 
enthalten)

Bauteile:
-Arduion Uno R3
-Beschleunigungssensor: Adafruit ADXL345
-GPS: Adafruit Ultimate GPS Logger Shield

Ausschnitt von Void Loop:

void loop() {


 /* Get a new sensor event */
  sensors_event_t event;
 accel.getEvent(&event);




  if (! usingInterrupt) {
    // read data from the GPS in the 'main loop'
    char c = GPS.read();
    // if you want to debug, this is a good time to do it!
    if (GPSECHO)
      if (c) Serial.print(c);
      /* Display the results (acceleration is measured in m/s^2) */
  Serial.print(event.acceleration.x); Serial.print("; ");
  Serial.print(event.acceleration.y); Serial.print("; ");
  Serial.print(event.acceleration.z); Serial.print("; 
");Serial.println(" ");
  delay(1000);
  }


  if (GPS.newNMEAreceived()) {
     char *stringptr = GPS.lastNMEA();

    if (!GPS.parse(stringptr))   // this also sets the newNMEAreceived() 
flag to false
      return;  // we can fail to parse a sentence in which case we 
should just wait for another


    Serial.println("OK");
    if (LOG_FIXONLY && !GPS.fix) {
      Serial.print("No Fix");
      return;
    }

    // Rad. lets log it!
    Serial.println("Log");


    uint8_t stringsize = strlen(stringptr);
    if (stringsize != logfile.write((uint8_t *)stringptr, stringsize)) 
//write the string to the SD file
        error(4);
    if (strstr(stringptr, "RMC") || strstr(stringptr, "GGA")) 
logfile.flush();
    Serial.println();

  }
}

Problem:

im Serieller Monitor erhalte ich nur die GPS Daten.
Die Beschleunigungsdaten gehen verloren

Vielen Dank für eure Tipps

Gruß

Gandy
OP #4604284
Lesenswert?
• ▲
▼
Code sieht in Farbe viel besser aus ;)
da hast du schon recht
1
void loop() {
2

3

4
 /* Get a new sensor event */
5
  sensors_event_t event;
6
 accel.getEvent(&event);
7

8

9

10

11
  if (! usingInterrupt) {
12
    // read data from the GPS in the 'main loop'
13
    char c = GPS.read();
14
    // if you want to debug, this is a good time to do it!
15
    if (GPSECHO)
16
      if (c) Serial.print(c);
17
      /* Display the results (acceleration is measured in m/s^2) */
18
  Serial.print(event.acceleration.x); Serial.print("; ");
19
  Serial.print(event.acceleration.y); Serial.print("; ");
20
  Serial.print(event.acceleration.z); Serial.print("; 
21
");Serial.println(" ");
22
  delay(1000);
23
  }
24

25

26
  if (GPS.newNMEAreceived()) {
27
     char *stringptr = GPS.lastNMEA();
28

29
    if (!GPS.parse(stringptr))   // this also sets the newNMEAreceived() 
30
flag to false
31
      return;  // we can fail to parse a sentence in which case we 
32
should just wait for another
33

34

35
    Serial.println("OK");
36
    if (LOG_FIXONLY && !GPS.fix) {
37
      Serial.print("No Fix");
38
      return;
39
    }
40

41
    // Rad. lets log it!
42
    Serial.println("Log");
43

44

45
    uint8_t stringsize = strlen(stringptr);
46
    if (stringsize != logfile.write((uint8_t *)stringptr, stringsize)) 
47
//write the string to the SD file
48
        error(4);
49
    if (strstr(stringptr, "RMC") || strstr(stringptr, "GGA")) 
50
logfile.flush();
51
    Serial.println();
52

53
  }
54
}
Gast #4604296
Lesenswert?
• ▲
▼
Andreas G. schrieb:
> Code sieht in Farbe viel besser aus ;)
> da hast du schon recht

Farbe macht die Welt zwar bunter, aber alleine nicht immer schöner. 
Üblicherweise wird C-Code vernünftig eingerückt und Zeilenumbrüche 
innerhalb von Zeichenketten erhöhen die Leasbarkeit nicht unbedingt.

Hast du auch eine Initialisierung für deine Sensoren und funktioniert 
der ADXL345 alleine. Betreibst du den über I2C oder über SPI?
OP #4604312
Lesenswert?
• ▲
▼
> Hast du auch eine Initialisierung für deine Sensoren
was meinst du genau damit?
(Ich verwende die Adafruit Lib. falls du das meinst)
> und funktioniert der ADXL345 alleine.?
Ja funktioniert alleine
>  Betreibst du den über I2C oder über SPI?
Beschleunigungssensor über I2C
die SD-Karte über SPI
OP #4604330
Lesenswert?
• ▲
▼
> Damit meine ich deine Setup() Funktion.
aso. Ja hab ich
> Kannst du den Datenverkehr auf dem I2C-Bus sehen
wie kann man den sehen?
> und wie geht es deinem Speicher?
Speicher - nur B.Sensor ADXL345 (25%)
Speicher - GPS und B.Sensor ADXL345 zusammen (79%)
Speicher - passt, würd ich sagen

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren