Problem using TinyGPS library;

Hi! Could you please help me using TinyGPS?

I have tried to find an answer for quite a long time but due to my lack of experience in Informatics, I can not find one.

I have an Arduino UNO, Arduino IDE 1.0.5 and I'm using the GY-GPS6MV2 GPS module. The connections are OK, the real issue is that I can't make use of the code.

Perhaps the problem is simple, I have just started in this area.
I have attached a copy of the erros bellow and the library as well.

There's also a link for you if you want to download TinyGPS library: [u]http://arduiniana.org/libraries/tinygps/[/u]

[color=limegreen]#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 3(rx) and 4(tx).
*/

TinyGPS gps;
SoftwareSerial nss(3, 4);

static void gpsdump(TinyGPS &gps);
static bool feedgps();
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);

void setup()
{
  Serial.begin(115200);
  nss.begin(4800);
  
  Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
  Serial.print("Sizeof(gpsobject) = "); Serial.println(sizeof(TinyGPS));
  Serial.println();
  Serial.println("Sats HDOP Latitude Longitude Fix  Date       Time       Date Alt     Course Speed Card  Distance Course Card  Chars Sentences Checksum");
  Serial.println("          (deg)    (deg)     Age                        Age  (m)     --- from GPS ----  ---- to London  ----  RX    RX        Fail");
  Serial.println("--------------------------------------------------------------------------------------------------------------------------------------");
}

void loop()
{
  bool newdata = false;
  unsigned long start = millis();
  
  // Every second we print an update
  while (millis() - start < 1000)
  {
    if (feedgps())
      newdata = true;
  }
  
  gpsdump(gps);
}

static void gpsdump(TinyGPS &gps)
{
  float flat, flon;
  unsigned long age, date, time, chars = 0;
  unsigned short sentences = 0, failed = 0;
  static const float LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
  
  print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
  print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
  gps.f_get_position(&flat, &flon, &age);
  print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 9, 5);
  print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 10, 5);
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);

  print_date(gps);

  print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 8, 2);
  print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
  print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);
  print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0UL : (unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);
  print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : TinyGPS::course_to(flat, flon, 51.508131, -0.128002), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);

  gps.stats(&chars, &sentences, &failed);
  print_int(chars, 0xFFFFFFFF, 6);
  print_int(sentences, 0xFFFFFFFF, 10);
  print_int(failed, 0xFFFFFFFF, 9);
  Serial.println();
}

static void print_int(unsigned long val, unsigned long invalid, int len)
{
  char sz[32];
  if (val == invalid)
    strcpy(sz, "*******");
  else
    sprintf(sz, "%ld", val);
  sz[len] = 0;
  for (int i=strlen(sz); i<len; ++i)
    sz[i] = ' ';
  if (len > 0) 
    sz[len-1] = ' ';
  Serial.print(sz);
  feedgps();
}

static void print_float(float val, float invalid, int len, int prec)
{
  char sz[32];
  if (val == invalid)
  {
    strcpy(sz, "*******");
    sz[len] = 0;
        if (len > 0) 
          sz[len-1] = ' ';
    for (int i=7; i<len; ++i)
        sz[i] = ' ';
    Serial.print(sz);
  }
  else
  {
    Serial.print(val, prec);
    int vi = abs((int)val);
    int flen = prec + (val < 0.0 ? 2 : 1);
    flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
    for (int i=flen; i<len; ++i)
      Serial.print(" ");
  }
  feedgps();
}

static void print_date(TinyGPS &gps)
{
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned long age;
  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  if (age == TinyGPS::GPS_INVALID_AGE)
    Serial.print("*******    *******    ");
  else
  {
    char sz[32];
    sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d   ",
        month, day, year, hour, minute, second);
    Serial.print(sz);
  }
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
  feedgps();
}

static void print_str(const char *str, int len)
{
  int slen = strlen(str);
  for (int i=0; i<len; ++i)
    Serial.print(i<slen ? str[i] : ' ');
  feedgps();
}

static bool feedgps()
{
  while (nss.available())
  {
    if (gps.encode(nss.read()))
      return true;
  }
  return false;
}

[errors]
test_with_gps_device:10: error: 'TinyGPS' does not name a type
test_with_gps_device:13: error: variable or field 'gpsdump' declared void
test_with_gps_device:13: error: 'TinyGPS' was not declared in this scope
test_with_gps_device:13: error: 'gps' was not declared in this scope
test_with_gps_device:17: error: variable or field 'print_date' declared void
test_with_gps_device:17: error: 'TinyGPS' was not declared in this scope
test_with_gps_device:17: error: 'gps' was not declared in this scope
test_with_gps_device.pde: In function 'void setup()':
test_with_gps_device:25: error: 'TinyGPS' has not been declared
test_with_gps_device:28: error: 'TinyGPS' was not declared in this scope
test_with_gps_device.pde: In function 'void loop()':
test_with_gps_device:47: error: 'gps' was not declared in this scope
test_with_gps_device:47: error: 'gpsdump' was not declared in this scope
test_with_gps_device.pde: At global scope:
test_with_gps_device:50: error: variable or field 'gpsdump' declared void
test_with_gps_device:50: error: 'TinyGPS' was not declared in this scope
test_with_gps_device:50: error: 'gps' was not declared in this scope
test_with_gps_device:122: error: variable or field 'print_date' declared void
test_with_gps_device:122: error: 'TinyGPS' was not declared in this scope
test_with_gps_device:122: error: 'gps' was not declared in this scope
[/errors]

I hope that you could help me solve my issue.

I am looking forward t earing from you.

Regards,

Eduardo

Eduardo

I downloaded the library from your "link", installed it in the proper place, copied your code, deleted the attempt to color the code, and verified. I got only one "error":

Binary sketch size: 15,846 bytes (of a 32,256 byte maximum)

Hi,

First of all, thank you for replying.

Secondly, I understand you may have had only one "error"(I am not following, what do you mean with the parentheses?), but what does that tell me?

but what does that tell me?

It tells me that the code compiled and linked just fine. I can't begin to guess what it tells you.

Candiver1:
Secondly, I understand you may have had only one "error"(I am not following, what do you mean with the parentheses?), but what does that tell me?

PaulS has no error, he just has a "success" message.

The errors you are seeing like:

test_with_gps_device:10: error: 'TinyGPS' does not name a type
clearly show that you messed it up to install the library correctly.

Either the library files are installed not at all. Or they are in the wrong directory.

See: https://www.arduino.cc/en/guide/libraries

If you have old 1.0.5 IDE, your only option is "manual installation".

Or it's your weird code. This IS NO ARDUINO CODE:

[color=limegreen]

Delete that from your sketch!

You were right. The problem was that I didn't install the library correctly.

Thank you very much for your help. I would probably be stuck without it.

Best wishes,

Eduardo