arduino mega 2560 r3 + ublox gy gps6mv2

The Arduino Mega 2560 R3 1 and 1 gyu gps6mv2 GPS receiver hooked up as follows.

continually dumped on the screen in this way

Can you help me?

using code;

#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 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(3, 4);

static void smartdelay(unsigned long ms);
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(9600); //115200

Serial.print(“Testing TinyGPS library v. “); Serial.println(TinyGPS::library_version());
Serial.println(“by Mikal Hart”);
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("-------------------------------------------------------------------------------------------------------------------------------------");

ss.begin(9600);
}

void loop()
{
float flat, flon;
unsigned long age, date, time, chars = 0;
unsigned short sentences = 0, failed = 0;
static const double 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, 10, 6);
print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
print_date(gps);
print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 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 ? 0xFFFFFFFF : (unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);
print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE : TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON), 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();

smartdelay(1000);
}

static void smartdelay(unsigned long ms)
{
unsigned long start = millis();
do
{
while (ss.available())
gps.encode(ss.read());
} while (millis() - start < ms);
}

static void print_float(float val, float invalid, int len, int prec)
{
if (val == invalid)
{
while (len-- > 1)
Serial.print(’*’);
Serial.print(’ ‘);
}
else
{
Serial.print(val, prec);
int vi = abs((int)val);
int flen = prec + (val < 0.0 ? 2 : 1); // . and -
flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
for (int i=flen; i<len; ++i)
Serial.print(’ ');
}
smartdelay(0);
}

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 = ’ ';

  • if (len > 0)*
  • sz[len-1] = ’ ';*
  • Serial.print(sz);*
  • smartdelay(0);*
    }
    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);*
  • smartdelay(0);*
    }
    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 : ’ ');_
    * smartdelay(0);*
    }

Can you help me?

The TinyGPS class needs to be getting good data. Do you have some proof that it is?

Dump your overly complex loop function. Replace it with:

void loop()
{
   while (ss.available())
     Serial.print(ss.read());
}

Show us the output of that code AS TEXT, NOT as a picture.

Testing TinyGPS library v. 13
by Mikal Hart

Sats HDOP Latitude Longitude Fix Date Time Date Alt Course Speed Card Distance Course Card Chars Sentences Checksum
(deg) (deg) Age Age (m) — from GPS ---- ---- to London ---- RX RX Fail

It shows in this way

It shows in this way

All that data is printed in setup(). You are not printing any data in loop(), which means that the Arduino is not getting any data from the GPS.

How can I overcome this problem. How can I get the GPS data

How can I overcome this problem.

Try swapping the lines going to pins 3 and 4.

I've changed. but it did not solve the problem

I just noticed that you are using a Mega. There is no excuse for using SoftwareSerial when there are three other hardware serial ports available.

There is even less excuse for trying to use it on pins that do not support pin change interrupts.