Problem with serial monitor while using gps

i got a problem of displaying the coordinate of the gps on the serial monitor.
the display is find until it display ****** instead of

here is my coding:

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

  • 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 = ' ';_
    * 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 : ' ');
    feedgps();
    }
    static bool feedgps()
    {
    while (nss.available())
    {
    if (gps.encode(nss.read()))
    return true;
    }
    return false;
    }
    *_

Please read these two posts:

How to use this forum - please read.
and
Read this before posting a programming question ...
You have posted code without using code tags. The code tags make the code look

like this

when posting source code files. It makes it easier to read, and can be copied with a single mouse click. Also, if you don't do it, some of the character sequences in the code can be misinterpred by the forum code as italics or funny emoticons.
If you have already posted without using code tags, open your message and select "modify" from the pull down menu labelled, "More", at the lower left corner of the message. Highlight your code by selecting it (it turns blue), and then click on the "</>" icon at the upper left hand corner. Click on the "Save" button.

try with these one

#include <SoftwareSerial.h>
#include <TinyGPS.h>
 
long flat,flon; // create variable for latitude and longitude object
 
SoftwareSerial gpsSerial(2, 3); // create gps sensor connection
TinyGPS gps; // create gps object
 
void setup(){
  Serial.begin(9600); // connect serial
  gpsSerial.begin(4800); // connect gps sensor
}
 
void loop(){
  while(gpsSerial.available()){ // check for gps data
   if(gps.encode(gpsSerial.read())){ // encode gps data
    gps.get_position(&flat,&flon); // get latitude and longitude
    // display position
    Serial.print("Position: ");
    Serial.print("flat: ");Serial.print(flat);// print latitude
    Serial.print("flon: ");Serial.println(flon); // print longitude
   }
  }
}

but u need to press reset button for getting latitude and lonitude

Using the much simpler code suggested above ensure that the baud rates for both the gps and the serial are correct and whilst your there check that TX and RX pins are also correct. I would slow the serial to 9600 to get started. Best of luck