Comment stocké une fonction GPS dans une variable

Bonjour,

Je m'excuse pourcette question qui doit être bien simple, mais je ne vois pas comment faire.

J'ai ceci (TinyGPS):

Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop()

et ceci

Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
        printFloat(flat, 2);

(les deux lugne ci-dessus, m'affiche les même valeurs...)

Qu'es-ce que c'est exactement les deux = ici

Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);

et le moins 6?

Est-ce que le -6, va afficher 6 chiffres après la virgules? Il semble bien que oui.

Ce que j'ai merais faire, c'est faire ceci

//Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
printFloat(flat, 2);

Donc j'ai pensé faire ceci:

flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat;
printFloat(flat, 2);

Alors ca marche, mais j'aimerais bien comprendre
ceci:

flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat;

Mon interpretation est la suivante:

Si TinyGPS::GPS_INVALID_F_ANGLE est TRUE, flat (de gauche) prend la valeru de 0.0, si FALSE flat (de gauche) prend la valeur de flat (après les :)????

:frowning: :frowning: :confused:

Serial.print([color=red]flat == TinyGPS::GPS_INVALID_F_ANGLE[/color] ? [color=green]0.0[/color] : [color=blue]flat[/color], [color=purple]6[/color]);

c'est l'opérateur ternaire: [color=red]test[/color] ? [color=green]expression1[/color] : [color=blue]expression2[/color] qui retourne expression1 si le test est vrai et sinon expression2

ça veut dire comparer l'égalité de flat à la valeur GPS_INVALID_F_ANGLE, si elles sont égales retourner 0.0 sinon retourner flat

ensuite ça va dans le print et comme c'est un nombre flottant on dit d'afficher avec 6 décimales

si vous voulez mettre la valeur corrigée dans flat vous pouvez faire

flat = (flat == TinyGPS::GPS_INVALID_F_ANGLE) ? 0.0 : flat;

Bonjour J-M-L

merci pour ces explication,

On est d'accord que ceci

f_speed = (gps.f_speed_kmph() == TinyGPS::GPS_INVALID_F_SPEED ? 0 : gps.f_speed_kmph());

est la meme chose que ceci:

f_speed = (gps.f_speed_kmph() == TinyGPS::GPS_INVALID_F_SPEED) ? 0 : gps.f_speed_kmph();

Bonne soirée!!