我正在为Uno写我的第一个代码,并且在使用库时遇到了问题。我创建了我的GPSLocation类的两个实例(loc1和loc2)来存储两个位置的经纬度。当我为它们分配值时,立即调用它们,这两个实例都具有相同的值,即我为其设置值的最后一个对象的值。我已经看了好几个小时了,看不到我做错了什么。

我的代码如下。任何帮助都会很棒。

Test.ino

void setup() {

  Serial.begin(115200);
}

void loop() {

    GpsLocation loc1;
    loc1.setLat(-12.3456);
    loc1.setLon(34.4567);
    GpsLocation loc2;
    loc2.setLat(-78.9123);
    loc2.setLon(187.6325);
    delay(1000);
    Serial.print("Loc1: ");
    Serial.print(loc1.getLat(), 4);
    Serial.print(", ");
    Serial.print(loc1.getLon(), 4);
    Serial.print("\n");
    Serial.print("Loc2: ");
    Serial.print(loc2.getLat(), 4);
    Serial.print(", ");
    Serial.print(loc2.getLon(), 4);
    Serial.print("\n");
}

GPSLocation.h
#ifndef GpsLocation_h
#define GpsLocation_h

#include "Arduino.h"

class GpsLocation
{
  public:
   GpsLocation();
   void setLat(float lat);
   void setLon(float lon);
   float getLat();
   float getLon();
};

#endif

GPSLocation.cpp
#include "Arduino.h"
#include "GpsLocation.h"

float latitude = 0.0;
float longitude = 0.0;

GpsLocation::GpsLocation(){}

void GpsLocation::setLat(float lat)
{
    latitude = lat;
}

void GpsLocation::setLon(float lon)
{
    longitude = lon;
}

float GpsLocation::getLat()
{
    return latitude;
}

float GpsLocation::getLon()
{
    return longitude;
}

这就是串行监视器返回的内容
Loc1: -78.9123, 187.6325
Loc2: -78.9123, 187.6325

最佳答案

我如下更新了我的GPSLocation类,这解决了我的问题。谢谢你们。

GPSLocation.h

#ifndef GpsLocation_h
#define GpsLocation_h

#include "Arduino.h"

class GpsLocation
{
  public:
   float latitude;
   float longitude;
};

#endif

GPSLocation.cpp
#include "Arduino.h"
#include "GpsLocation.h"

如下设置和从 Test.ino 获取
loc1.latitude = -12.3456;
Serial.print(loc1.latitude, 4);

08-16 12:36