GPS-LCD Speedometer

Hello, I own an Arduino Uno Rev3, a SainSmart 4884 Graphics Display module, and an Adafruit Ultimate GPS Logger Shield. I already know that I can stack them with Adafruit's stackable headers. Anyway, I need help programming something that gets my Longitude, Latitude, and speed from the GPS and displays it on the LCD. I have no idea where to start, but I do have the libraries. Here is what I have so far:

#include <DFrobot_bmp.h>
#include <DFrobot_chinese.h>
#include <font_6x8.h>
#include <font_big.h> //< Above are all font libraries and stuff
#include <LCD4884.h> // < This is the LCD4884 Graphics Module Library
#include <Adafruit_GPS.h> // < This is Adafruit's Ultimate GPS Module

I really need help, as I am a newbie to this program. I would gladly appreciate it. I have little knowledge on Arduino program, I only know BASIC. Please help me finish my code. I am doing this project as a speedometer for my RC car (as the GPS logs to a microSD, I can get the top speed) and for geocaching without directions, (JUST LAT, LONG)

inval1d:
I am doing this project as a speedometer for my RC car (as the GPS logs to a microSD, I can get the top speed) ...

The RC car (or An RC car) isn't going to go far enough for that to figure.
The difference in coordinates won't be far enough apart to make such a determination.
It's not that fine.

I have made lcd speedos that are graphic for choppers.

The GPS one of the very best available out their leaving the RTK ones which are like $999(leving these out of context) these gps modules are correct to the minium 1meter accuracy so even if the GPS modules is damn correct and right on the meter accuracy you wont be able to calculate any speed or get any coordinates for the distance you ran for that is under 1meter.

EDIT:

So I would suggest taking the rotation counting using a magnet and a hall sensor or using the optical rotary encoders.

Video I found: http://m.youtube.com/watch?v=sdApD66HGSI

inval1d:
Video I found

So, what's your point?
Does that "video" support my contention or your desire?

Please read and understand the posts advice that will help you or else ask straighaway what you exatly desire posting the video there didn't specify straightaway that what you seek?

The video was posted because it proved that the GPS is accurate enough to get a speed.

The video was posted because it proved that the GPS is accurate enough to get a speed.

The GPS offcourse is accurate but I told you in my above post that its accurate to the extent of 1meter that is also not concretely defined and there maybe a bit of diversion in accuracy from vendor to vendor, I think the video you posted shows GPS and oled display etc mounted in a car. but you want it to do for your RC car and an RC car covers less distance.

Just use a optical rotary encoder to read the pulses per rotation and calculate the speed, goto polulu's website.

I don't have the money for an optical encoder. I am too young for a job and just spent my last 50$ on the GPS Module/Shield. And: my point is, my RC car can go faster than the car was going at that time (RC car's top speed is about 35mph). So, I just need help making a code that calculates speed and displays it to an LCD screen. Thanks for your suggestions

ok try it ,here's a link to get started >> www.instructables.com/id/Compact-Arduino-GPS-Speedo-and-more/

Thanks, I'm looking into it now. Can I add you on skype?

Can I add you on skype?

on the forum will help everyone.

Oh, I see. Also: Do I need to add the library for the LCD4884 or do I just change the pins to my LCD? Also my LCD has a built in button, do I just use that pin? I have no idea how to modify the program. Thanks for your help so far. Can you or someone else help me modify the code to my particular hardware? Thanks

inval1d:
my point is, my RC car can go faster than the car was going at that time (RC car's top speed is about 35mph).

But your RC car can't go far enough to result in fixes enough for a speed reading that means anything, as I stated in Reply#1 and NI$HANT has tried to help you to understand.

inval1d:
I am too young for a job and just spent my last 50$ on the GPS Module/Shield...

Research first, Spend later.

Do I need to add the library for the LCD4884 or do I just change the pins to my LCD?

Both The connections have to be to the correct pins and the library be used, just by correct connections seldom you wont get it working it needs a software library to be worked at!

Also my LCD has a built in button, do I just use that pin?

Yes you may use it although I dont know what it does so I cant really help you out to know whether its to be connected as you visualise ,just check the lcds datasheet.

I have no idea how to modify the program. Thanks for your help so far. Can you or someone else help me modify the code to my particular hardware?

Research first, Spend later.

I think here is the learning oppurtunity, you have a lot of things here to learn from first researching before buying to learning a lot about how code in Arduino is done etc

If you use the TinyGPS (https://github.com/awaxa/arduino/tree/master/libraries/TinyGPS) library there is a ground speed option there that uses the NMEA string $GPVTG to calculate the Ground Speed
The sentence is broken up like below if you prefer to decode it yourself

Track Made Good and Ground Speed.

$GPVTG

eg1. $GPVTG,360.0,T,348.7,M,000.0,N,000.0,K*43
eg2. $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K

054.7,T True track made good
034.4,M Magnetic track made good
005.5,N Ground speed, knots
010.2,K Ground speed, Kilometers per hour

eg3. $GPVTG,t,T,,,s.ss,N,s.ss,K*hh
1 = Track made good
2 = Fixed text 'T' indicates that track made good is relative to true north
3 = not used
4 = not used
5 = Speed over ground in knots
6 = Fixed text 'N' indicates that speed over ground in in knots
7 = Speed over ground in kilometers/hour
8 = Fixed text 'K' indicates that speed over ground is in kilometers/hour
9 = Checksum

The actual track made good and speed relative to the ground.

$--VTG,x.x,T,x.x,M,x.x,N,x.x,K
x.x,T = Track, degrees True
x.x,M = Track, degrees Magnetic
x.x,N = Speed, knots
x.x,K = Speed, Km/hr

Hope this help a little

Cheers Pete.

Thanks. I have a question for you: How would I go about displaying this on an LCD? Do I set it as a variable and display the variable about every half a second? How do I do that? Thanks

Do you have information displaying on the LCD at all? If not, go looking for an appropriate library.

Otherwise, yes, you would parse the NMEA string to read the variable, and then you have the software update the LCD every half second based on the variable.

Yes, I do have the appropriate libraries to do so. I will upload my code do far soon.

I still have no idea how to do the variables and make the LCD read them. Can someone help?