[Arduino] Char Array zu float Konvertieren

amarok2

Erfahrener Benutzer
#1
hi,

ich möchte etwas mit einem Arduino programmieren:

Der Arduino bekommt von einem GPS Empfänger die aktuellen Positionsdaten (das wird über Serial.read() in ein char array geschrieben).
Wenn alles Empfangen wurde, wird die höhe in ein anderes char array geschrieben.

was bis jetzt auch 1a funktioniert.

Nur wie bekomme ich den wert des zweiten char arrays in eine float variable?

das zweite char array hat z.b. diese werte:

alt[0] = 5
alt[1] = 4
alt[2] = 9
alt[3] = .
alt[4] = 2

kennt sich damit jemand aus und kann mir helfen?

google bringt nichts :/
 

cesco1

Erfahrener Benutzer
#3
direkt aus dem mwii gps parser:

Code:
// helper functions 
uint16_t grab_fields(char* src) 
{  // convert string to uint16
  uint8_t i;
  uint16_t tmp = 0;

  for(i=0; src[i]!=0; i++) 
  {
    if(src[i] == '.') 
    {
      i++;
      break;
    }
    tmp *= 10;
    if(src[i] >='0' && src[i] <='9') tmp += src[i]-'0';
  }
  return tmp;
}
 

amarok2

Erfahrener Benutzer
#4
hi,

danke für deine Mühe, habs aber schon anders gelöst (hab diese Funktion über google gefunden, die hat aber nur int ausgespuckt, funktioniert dank olex jetzt...):

Code:
float extract(char *input, byte from, byte lange) {
  char temp[lange] = { 0 };
  strncpy(temp, input+from, lange);
  return atof(temp);
}
 
FPV1

Banggood

Oben Unten