Hilfe, TinyGPS Topspeed Funktion?

Hallo Zusammen,
Ich bin noch neu im Arduino Thema und komme bei meinem Programm nicht weiter...

Mein Setup:
Arduino Uno R3
Ublox Neo 6m GPS
SH1106 OLED

Wie man die ganzen Daten com GPS zieht und Anzeigt ist ja recht eindeutig wenn man sich die Beispiele ansieht.
Nun möchte ich mit aber meinen Topspeed anzeigen lassen.

Nach langem rum suchen in anderen Themen und rum probieren komme ich einfach nicht weiter. :neutral_face:

Er zeigt alle Daten im Serial Monitor richtig an, nur Vmax bleibt eben die null stehen....

Im Kopf setze ich unächst den Aktuellen- und Topspeed auf null.
Ganz am Ende dann die Errechnung des Topspeed. (zumindest Theoretisch).

Weiß von euch jemand wo hier der fehler liegt?

Ps. Wie hänge ich das Programm eigentlich "vernünftig" an und nicht als Text? :sweat_smile:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

static const int RXPin = 4, TXPin = 3;// Here we make pin 4 as RX of arduino & pin 3 as TX of arduino 
static const uint32_t GPSBaud = 9600;

TinyGPSPlus gps;
SoftwareSerial ss(RXPin, TXPin);

int maxspeed=0;
int currentspeed=0;

void setup()
{
  Serial.begin(9600);
  ss.begin(GPSBaud);
}



void loop()
{
    while (ss.available() > 0)
    if (gps.encode(ss.read()))
    displayInfo();
}


void displayInfo()
{

  //Print Location
    Serial.print(F("Location: ")); 
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);

  //Print Date
    Serial.print(F("  Date "));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.year());

  //Print Current Speed
    Serial.print(F("  Speed: ")); 
    Serial.print(gps.speed.kmph());
    Serial.print(F("kmph "));

  //Print Max Speed
    Serial.print(F("  Vmax: ")); 
    Serial.print(maxspeed);
    Serial.print(F("kmph "));
  
  
  Serial.println();

  delay(500);
}


void vmax() {
      currentspeed = (gps.speed.kmph());
      if ( currentspeed > maxspeed) 
      {maxspeed = currentspeed;}
  }

Geh zurück in Deinen Post (unten rechts der Bleistift)
Dann markiere den Code und klicke mit der Maus auf das </> Symbol. Voila!
(Und dann nimm die Sternchen raus - mach einen Zeilenkommentar...)

das rufst Du nie auf.

Vorschlag:


void loop()
{
  if (ss.available() > 0)
    if (gps.encode(ss.read()))
    {
      displayInfo();
      vmax();
    }
}

Oh ja. :joy:
Das dann auch aufzurufen wäre viellicht nicht schlecht.

Danke für die Hilfe.

Zu diesem Zweck wenigstens eine Serielle Ausgabe in die Funktion. Dann merkt man das ganz schnell :wink: