Ozgurmmm
Üye
- Katılım
- 7 Eki 2020
- Mesajlar
- 1
- Puanları
- 1
- Yaş
- 50
Kod:
#include <AltSoftSerial.h>
#include <Wire.h>
#include <NMEA0183.h>
#include <NMEAParser.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// matches Zihatec RS422/RS485 shield
AltSoftSerial gps;
NMEA0183 nmea;
NMEAParser<4> parser;
float gprmc;
float gprmb;
void handleGPRMC(void)
{
float test;
if (parser.getArg(4, test))
{
gprmc = test;
Serial.print(gprmc);
}
}
void handleGPRMB(void)
{
float test1;
if (parser.getArg(4, test1))
{
gprmb = test1;
Serial.print(gprmb);
}
}
void setup() {
Serial.begin(4800);
gps.begin(4800);
Serial.println("AltSoftSerial Test Begin");
// Start Serial
while (!Serial);
Serial.println("NMEA0183 parser test");
// Start LCD
lcd.begin();
lcd.backlight();
parser.addHandler("GPRMB", handleGPRMB);
parser.addHandler("GPRMC", handleGPRMC);
}
void loop()
// Reveive data from GPS
{
lcd.setCursor(0,0);
if (gps.available())
{
char c = gps.read();
if (nmea.update(c))
{
Serial.print("NMEA0183 sentence accepted (");
Serial.print(nmea.getFields());
Serial.print(" fields): ");
Serial.write(nmea.getSentence());
Serial.println();
// Display Data from GPS
lcd.clear();//Clean the screen
lcd.setCursor(0,0);
lcd.print(nmea.getFields());
lcd.setCursor(3,0);
lcd.print(" data received ");
lcd.setCursor(0,1);
lcd.print(nmea.getSentence());
// if (Serial.available()) {
parser << Serial.read();
// }
}
}
}
bu kod a ayrıca nmea parser i ekledim fakat parser sonuçlarını serialmonitörde yazdıramadım. Kodun neresinde hata yapıyorum? Bu arada 2 haftadır C öğreniyorum belirtmek isterim.
Moderatör tarafında düzenlendi: