/*
xsetaseta@gmail.com
seta comunicaciones
*/
// include the library code:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
char VARI[100];
int contador;
boolean stringComplete = false;
//char hora[10];
byte pantalla;
struct DATOSGPS{
char cadena[16];
};
struct DATOSGPS datosgps[22];
void split (char separador)
{
int x,xx,y,z;
z=sizeof(VARI);
y=0;
xx=0;
for(x=0;x<z;x++)
{
datosgps[y].cadena[xx]=VARI[x];
if(VARI[x]==0) break;
if( separador==VARI[x])
{
datosgps[y].cadena[xx]=0;
xx=0;
y++;
}
else
{
xx++;
}
}
}
void insert(int n,char caracter)
{
int x;
x=sizeof(VARI);
for(;x>n;x--)
{
VARI[x]=VARI[x-1];
}
VARI[x]=caracter;
}
void setup() {
// initialize both serial ports:
lcd.begin(16, 2);
Serial.begin(38400);
}
void serialEvent()
{
while (Serial.available())
{
char inChar = (char)Serial.read();
VARI[contador]=inChar;
if (inChar == '\n')
{
stringComplete = true;
VARI[contador]=0;
}
contador++;
}
}
void loop() {
if (stringComplete)
{
WriteComand();
}
}
void WriteComand()
{
if(!strncmp(VARI,"$GPGGA",6))
{
Serial.print("OK->");
Serial.println(VARI);
split(',');
if(pantalla==0)
{
pantalla=1;
lcd.clear();
//Hora
strcpy(VARI,datosgps[1].cadena);
insert(2,':');
insert(5,':');
VARI[8]=0;
Serial.println(VARI);
lcd.setCursor(0, 0);
lcd.print(VARI);
if(datosgps[6].cadena[0]!='0')
{
lcd.setCursor(0, 1);
lcd.print("");
}
else
{
lcd.setCursor(0, 1);
lcd.print(" ");
}
}
else
{
pantalla=0;
lcd.clear();
strcpy(VARI,datosgps[2].cadena);
insert(2,' ');
Serial.print(VARI);
lcd.setCursor(0, 0);
lcd.print(VARI);
strcpy(VARI,datosgps[3].cadena);
Serial.println(VARI);
lcd.setCursor(10, 0);
lcd.print(VARI);
strcpy(VARI,datosgps[4].cadena);
insert(3,' ');
Serial.print(VARI);
lcd.setCursor(0, 1);
lcd.print(VARI);
strcpy(VARI,datosgps[5].cadena);
Serial.println(VARI);
lcd.setCursor(11, 1);
lcd.print(VARI);
}
}
contador=0;
stringComplete = false;
}
|