Visa GPS-position på en LCD-skärm (7 / 17 steg)
Steg 7: Programkod
Nedan är den kod som används för att visa vårt läge på LCD-skärmen. Innan du överför koden, se till att sändande fodra av det allmänna preferenssystemet (Pin 3) är frånkopplad. Med andra ord, koppla bort kabeln som går in i den Arduino pin 0 innan du lägger upp koden. När koden är uppladdad, kan du ansluta kabeln igen.
#include
#include
SoftwareSerial mySerial (0, 1); RX, TX
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);
Initiera variablerna globalt
char GPS_text;
int comma_count = 0;
Sträng latitud, longitud;
int söder = 0, väst = 0, count = 1;
void setup()
{
Serial.BEGIN(115200);
mySerial.begin(57600);
LCD.BEGIN (16, 2);
}
void loop() / / kör om och om igen
{
om (mySerial.available()) {//Check för tillgängliga data
GPS_text = mySerial.read(); Lagra värdet i variabeln
om (GPS_text == '$') {//Check om variabeln börjar med '$'
Serial.write("\n");
comma_count = 0;
Latitude = "\0";
longitud = "\0";
}
//**************GPS Count*************//
om (GPS_text == ',') //Check för kommatecken och separat
{
' comma_count = comma_count + 1;
}
IF(comma_count == 2)
{
Latitude += GPS_text; Mottagaren sända eller ta emot av en byte i taget. Detta kommando används för att lagra byte i enda variabeln
Count = 0;
}
IF(comma_count == 3)
{
Latitude += GPS_text;
om (greve == 1)
{
*** GPS LATITUD DATA SEPARATION ***
Serial.println ("*** GPS DATA ***");
Serial.println ("LAT:" + latitud); Visa GPS-format latitute i ddmm.mmmm
Sträng dd, mm2, mm1 mm3;
int dotlocation = latitude.indexOf('.');
DD = latitude.substring (dotlocation-4, dotlocation-2).
MM1 = latitude.substring (dotlocation-2, dotlocation);
mm2 = latitude.substring (dotlocation + 1, dotlocation + 5);
osignerade långa D1 = dd.toInt(); Konvertera fick ta emot strängen till int
osignerade långa MM1 = mm1.toInt(); Konvertera fick ta emot strängen till int
osignerade långa MM2 = mm2.toInt(); Konvertera fick ta emot strängen till int
int setdot; Används för att ange precision
om (D1 > 9)
setdot = 2;
annat
setdot = 1;
Serial.Print ("DD =");
Serial.println(D1); Lagra dd
Serial.Print("MM1=");
Serial.println(MM1); Lagra två mm
Serial.Print("mm2=");
Serial.println(mm2); Butiken är fortfarande .mmmm
Serial.Print ("dotlocation =");
Serial.println(dotlocation);
Konverteringen *** / /
D1 = D1 * 100000;
Serial.println(D1);
MM1 = MM1 * 10000;
osignerade långa härda;
Temp = MM1 + MM2;
Serial.println(temp);
Temp = temp / 6;
D1 = D1 + temp;
Serial.Print ("D1 =");
Serial.println(D1);
Sträng ett = (sträng) D1;
DD = A.substring(0,setdot);
MM1 = A.substring(setdot);
om (GPS_text == 'S ")
{
A = "-" + dd + '.' + mm1; Att visa den "-dd.mmmm" om dess söder
Serial.write ("syd = \t");
}
annat
{
A = dd + '.' + mm1; Visa "dd.mmmm" om dess norr
Serial.write ("norr = \t");
}
Serial.println(A);
LCD-Display *** / /
lcd.setCursor (0, 0); Ställa in markörens position
LCD.Print ("LAT:" + A); Skriva ut resultatet i LCD
}
att kontrollera GPS texten efter kommatecknet
antal = antal + 1.
}
IF(comma_count == 4)
{
longitud += GPS_text;
Count = 0;
}
IF(comma_count ==5)
{
longitud += GPS_text;
om (greve == 1)
{
*** GPS longitud DATA separation ***
Serial.println ("LON:" + longitud);
Sträng dd, mm2, mm1 mm3;
int dotlocation = longitude.indexOf('.');
DD = longitude.substring (dotlocation-5, dotlocation-2).
MM1 = longitude.substring (dotlocation-2, dotlocation);
mm2 = longitude.substring (dotlocation + 1, dotlocation + 5);
osignerade långa D1 = dd.toInt(); Konvertera fick ta emot strängen till int
osignerade långa MM1 = mm1.toInt(); Konvertera fick ta emot strängen till int
osignerade långa MM2 = mm2.toInt(); Konvertera fick ta emot strängen till int
int setdot;
om (D1 > 99)
setdot = 3;
annars om (D1 > 9)
setdot = 2;
annat
setdot = 1;
Serial.Print ("DD =");
Serial.println(D1); Lagra dd
Serial.Print("MM1=");
Serial.println(MM1); Lagra mm
Serial.Print("mm2=");
Serial.println(mm2); Lagra .mmmm
Serial.Print ("dotlocation =");
Serial.println(dotlocation);
Konverteringen *** / /
D1 = D1 * 100000;
Serial.println(D1);
MM1 = MM1 * 10000;
osignerade långa härda;
Temp = MM1 + MM2;
Serial.println(temp);
Temp = temp / 6;
D1 = D1 + temp;
Serial.Print ("D1 =");
Serial.println(D1);
Sträng ett = (sträng) D1;
DD = A.substring(0,setdot);
MM1 = A.substring(setdot);
om (GPS_text == "W")
{
A = "-" + dd + '.' + mm1; Att visa om väster
Serial.write ("väst = \t");
}
annat
{
A = dd + '.' + mm1; Att visa om söder
Serial.write ("österut = \t");
}
Serial.println(A);
LCD-Display *** / /
lcd.setCursor (0, 1); Ställa in markörens position
LCD.Print ("LON:" + A); //Print resultatet i LCD
}
antal = antal + 1.
}
IF(comma_count == 6)
{
Count = 0;
}
}
}