значения глубины из NMEA 183

SergeyG
Offline
Зарегистрирован: 28.05.2015

Здравствуите написал вот такой код для извлечения значения глубины SDDPT из сообщения NMEA

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#include "TM1637.h"
#define CLK 2 
#define DIO 3  
TM1637 disp(CLK,DIO);

static const int RXPin = 10, TXPin = 11;
static const uint32_t GPSBaud = 4800;

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

TinyGPSCustom SDDPT(gps, "SDDPT", 1); // $SDDPT sentence, 1 element

void setup() 
{
  Serial.begin(4800);
  ss.begin(GPSBaud);

  disp.set(5);
  disp.init(D4056A);
}

void loop() 
{
 
Serial.println(SDDPT.value()); 
while (ss.available() > 0)
gps.encode(ss.read());

 delay(20); 
}

строка Serial.println(SDDPT.value()); работает четко на ком порт идет числове значение глубины, но никак не могуполучить глубину SDDPT внутри программы в виде числа чтоб можно было работать с ним (суммировать и вычитать) . помогите решить проблему. спс

maksim
Offline
Зарегистрирован: 12.02.2012

Проблему не видно, поэтому вам никто не поможет.

SergeyG
Offline
Зарегистрирован: 28.05.2015

во всех описаниях например тут http://arduiniana.org/2013/09/tinygps-a-new-view-of-global-positioning/

результат 

TinyGPSCustom SDDPT(gps, "SDDPT", 1); // $SDDPT sentence, 1 element

выводится на сериал порт

Serial.println(SDDPT.value()); 

в итоге  получаем число формата ХХ,Х соответствующие глубине на сериал порту. Но мне не надо посылать его на сериал порт,мне надо присвоить его переменной внутри скетча чтоб можно было работать с ним дальше (складывать и вычитать),чтоб в зависимости от его числового значения управлять исполнительным устройством проблема что я не могу ето сделать.

 

 

SergeyG
Offline
Зарегистрирован: 28.05.2015

опыт программирования у меня нулевой возможно все оч просто но я нигде не могу наити решение.

maksim
Offline
Зарегистрирован: 12.02.2012

Дело не в программировании, вы по кой то хер показываете примеры рабочего кода, вместо того, что бы показать свой код, который не работает, поэтому и проблемы никакой не видно.

  char* buff = "123.25";
  float n = atof (buff);

 

SergeyG
Offline
Зарегистрирован: 28.05.2015

в таком виде все заработало

float n = atof (SDDPT.value());

 спс за помощь )