GPS SPARKFUN MODULE
GPS READING ATTEMPT
I have been trying to interface the GPS Module EM406 from Sparkfun with Arduino, and then later Arduino Mini. I have had some issued figuring out the pin connections, but now what i am struggling with is the code. This is the code i borrowed from the Tutorials and made some changes to:
#include
#include
#define bit9600Delay 84
#define halfBit9600Delay 42
#define bit4800Delay 188
#define halfBit4800Delay 94
byte rx = 0;
byte tx = 1;
byte SWval;
char dataformat [7] = "$GPRMC";
char messageline[80] = "";
int i = 0;
void setup() {
pinMode(rx,INPUT);
pinMode(tx,OUTPUT);
digitalWrite(tx,HIGH);
//digitalWrite(rx,HIGH);
digitalWrite(13,HIGH); //turn on debugging LED
//SWprint('h'); //debugging hello
//SWprint('i');
//SWprint(10); //carriage return
Serial.begin (4800);
}
void SWprint(int data)
{
byte mask;
//startbit
digitalWrite(tx,LOW);
delayMicroseconds(bit4800Delay);
for (mask = 0x01; mask>0; mask <<= 1) {
if (data & mask){ // choose bit
digitalWrite(tx,HIGH); // send 1
}
else{
digitalWrite(tx,LOW); // send 0
}
delayMicroseconds(bit4800Delay);
}
//stop bit
digitalWrite(tx, HIGH);
delayMicroseconds(bit4800Delay);
}
int SWread()
{
byte val = 0;
while (digitalRead(rx));
//wait for start bit
if (digitalRead(rx) == LOW) {
delayMicroseconds(halfBit4800Delay);
for (int offset = 0; offset < 8; offset++) {
delayMicroseconds(bit4800Delay);
val |= digitalRead(rx) << offset;
}
//wait for stop bit + extra
delayMicroseconds(bit4800Delay);
delayMicroseconds(bit4800Delay);
return val;
}
}
void char2string()
{
i=0;
messageline[0] = SWread();
if (messageline [0] == 36) //string starts with $
{
i++;
messageline [i] = SWread();
while (messageline[i] != 13 & i<80) //carriage return or max size
{
i++;
messageline [i] = SWread ();
}
messageline [i+1] = 0; //make end to string
}
}
void loop()
{
digitalWrite (13,HIGH);
char2string();
if (strncmp(messageline, dataformat, 6) == 0 & i>4){
for (int i=0; i
}
}
//Serial.print(SWread(), BYTE); use this to get all GPS output comment out from char2string till here
}
Unfortunately this is what i get for data and i only receive serial data when pressing the RESET button:

"$GPRMC" is the NMEA format that I am looking to parse out. Any suggestions?