>

아두 이노와 함께 유 블럭 스 GPS를 사용합니다. 다음과 같이 좌표 값 (lat, lng)을 성공적으로 쓸 수 있습니다 : Serial.println (gps.location.lat(), 8);  그러나 모든 소수로 값을 저장하려고하면 8.00 가 반환됩니다.  올바른 좌표 대신 8 개의 소수점을 모두 사용하십시오.

이것은 내 코드입니다 :

#include "TinyGPS++.h"
#include <SoftwareSerial.h>
SoftwareSerial gpsconnection (4,3);
TinyGPSPlus gps;
void setup()
{
 Serial.begin(9600);
 gpsconnection.begin (9600); 
}
void loop()
{
 while (gpsconnection.available())
 {
   gps.encode(gpsconnection.read());
 }
 //this works and returns 8 decimals
 Serial.println (gps.location.lat(), 8);
 Serial.println (gps.location.lng(), 8);
 //but if i try to store it like this:
 double latcord = (gps.location.lat(), 8);
 double lngcord = (gps.location.lng(), 8);
 //it returns 8.00 on both the "latcord" and "lngcord" which is the wrong coordinate and also it doesnt return 8 decimals
 Serial.println (latcord);
 Serial.println (lngcord);
 //if i try to convert the value to a string and then back to a double like this:
 double lat = gps.location.lat();
 String msgLat =  String(lat, 8);
 double thelat = atof(msgLat.c_str());
 //with this i get the correct first two numbers out but only 2 decimals after, not 8 decimals as it should be.
 Serial.println (thelat);
}

  • 답변 # 1

    당신은 , 8 를 잊었다  소수점 이하 8 자리를 인쇄하도록 지정하는 println에서. 대신 과제의 끝에 추가 한 것으로 보이며, 이는 전혀 이해가되지 않습니다.

    double latcord = gps.location.lat();
    double lngcord = gps.location.lng();
    Serial.println(latcord, 8);
    Serial.println(lngcord, 8);
    
    

  • 이전 arduino - 어댑터가있는 arduino의 전원 LED
  • 다음 arduino - IC 카드 UID를 읽을 수 없습니다