Forum: Mikrocontroller und Digitale Elektronik Problem bei Kombination von GPS shield und ADXL345


von Andreas G. (gandy)


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

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Als Erstes solltest Du den Quelltext ordentlich formatieren. Für die 
Veröffentlichung im Forum sollte auch auch mit den geigneten Code-Tags 
versehen werden, damit er als Quelltext zu erkennen ist.

von Andreas G. (gandy)


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
}

von Wolfgang (Gast)


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?

von Andreas G. (gandy)


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

von Wolfgang (Gast)


Lesenswert?

Andreas G. schrieb:
>> Hast du auch eine Initialisierung für deine Sensoren
> was meinst du genau damit?

Damit meine ich deine Setup() Funktion.

Kannst du den Datenverkehr auf dem I2C-Bus sehen und wie geht es deinem 
Speicher?

von Andreas G. (gandy)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.