试图获取我的 GPS 的位置,但序列号收到 0.00000;0.00000
Trying to get the location of my GPS but the serial received 0.00000;0.00000
Arduino代码:
#include <SoftwareSerial.h>
#include <TinyGPS.h>
//long lat,lon; // create variable for latitude and longitude object
float lat,lon ; // create variable for latitude and longitude object
SoftwareSerial gpsSerial(3,4);//rx,tx
TinyGPS gps; // create gps object
void setup(){
Serial.begin(9600); // connect serial
Serial.println("The GPS Received Signal:");
gpsSerial.begin(9600); // connect gps sensor
}
void loop(){
String latitude = String(lat,6);
String longitude = String(lon,6);
Serial.println(latitude+";"+longitude);
delay(1000);
}
我正在尝试获取我的 GPS 的位置,但串行接收到 0.00000;0.00000 我做错了什么?
你有一个大问题,你从来没有从你的 GPS 对象中获取数据到你的变量中。做法如下:
// create variable for latitude and longitude object
double lat = 0; // The lib defines it as double!
double lon = 0; // The lib defines it as double!
unsigned long lastGpsCheck = 0;
const unsigned long delayTime = 1000;
....
void loop(){
// Replaces the CPU stopping delay, does the same without blocking
if(millis() - lastGpsCheck > delayTime) {
lat = gps.location.lat(); // This is missing in your code
lon = gps.location.lon(); // This is missing in your code
Serial.println( lat,6 );
Serial.print(";");
Serial.print(lon,6 );
lastGpsCkeck = millis();
}
}
注意:我替换了延迟,早点学会不要在循环、子程序或库中使用延迟。它可以在设置中等待硬件初始化或作为临时调试帮助。
避免转换为字符串 class。始终使用固定字符数组。字符串 class 有错误的内存管理并破坏你的堆(内存泄漏 -> 崩溃),修复 char 数组被编译到闪存。
Arduino代码:
#include <SoftwareSerial.h>
#include <TinyGPS.h>
//long lat,lon; // create variable for latitude and longitude object
float lat,lon ; // create variable for latitude and longitude object
SoftwareSerial gpsSerial(3,4);//rx,tx
TinyGPS gps; // create gps object
void setup(){
Serial.begin(9600); // connect serial
Serial.println("The GPS Received Signal:");
gpsSerial.begin(9600); // connect gps sensor
}
void loop(){
String latitude = String(lat,6);
String longitude = String(lon,6);
Serial.println(latitude+";"+longitude);
delay(1000);
}
我正在尝试获取我的 GPS 的位置,但串行接收到 0.00000;0.00000 我做错了什么?
你有一个大问题,你从来没有从你的 GPS 对象中获取数据到你的变量中。做法如下:
// create variable for latitude and longitude object
double lat = 0; // The lib defines it as double!
double lon = 0; // The lib defines it as double!
unsigned long lastGpsCheck = 0;
const unsigned long delayTime = 1000;
....
void loop(){
// Replaces the CPU stopping delay, does the same without blocking
if(millis() - lastGpsCheck > delayTime) {
lat = gps.location.lat(); // This is missing in your code
lon = gps.location.lon(); // This is missing in your code
Serial.println( lat,6 );
Serial.print(";");
Serial.print(lon,6 );
lastGpsCkeck = millis();
}
}
注意:我替换了延迟,早点学会不要在循环、子程序或库中使用延迟。它可以在设置中等待硬件初始化或作为临时调试帮助。
避免转换为字符串 class。始终使用固定字符数组。字符串 class 有错误的内存管理并破坏你的堆(内存泄漏 -> 崩溃),修复 char 数组被编译到闪存。