Go Down

Topic: utiliser deux valeurs d'un capteur ( t1 et t2) dans une même boucle (Read 974 times) previous topic - next topic

martinletiec

Bonjour, la question à ma réponse est probablement déja dans le forum, mais je n'ai pas eu le courage de tout parcourir, je m'en excuse.

Voici le contexte de ma question :

Nous cherchons à comparer la distance d'un utilisateur de sa destination (décrite par des coordonées GPS déclarées), toutes les X secondes afin de savoir si cette distance diminue ou s'agrandis :
Grossièrement :
- Un GPS donne (lat, long) de l'utilisateur à t1, on trouve la distance Delta avec une formule trigo avec (lat,long) de la destination comme référence.
- Même chose à t2
--> si Dt2-Dt1 <0 la distance s'agrandie
--> si Dt2-Dt1 >0 la distance diminue
Et on ainsi de suite.

La question est :
Comment stocker la valeur (lat,long)t1 ? Si nous n'avons aucun problème pour calculer en temps réel la distance par rapport à une donnée fixe, en revanche nous ne savons pas comment la comparé à une valeur "passé". Nous pensons qu'il faut alors stocker les résultat sur une carte SD et les appeler ensuite, mais nous nous demandons s'il existe une alternative car nous avons besoin de stocker uniquement la valeur 2 du GPS

Si cela dit quelque chose à quelqu'un, merci !

Martin


karistouf

bonjour martin,
tu n as pas à utiliser une carte SD pour çà !
il suffit de déclarer en variable globale en début de code ( après les include).
Les variables globales sont accessibles à toutes les fonctions pendant l'éxécution du programme.

Pseudo code:

Code: [Select]

int Dt1[2], Dt2[2];//2 tableaux pour stocker la valeur précédente et la valeur actuelle


...
void main()
{
//dans ta boucle
//l'aquisition de lat et long par ta bibliothèque GPS
Dt1[0]=lat;
Dt1[1]=long;
//le check de la différence entre Dt1 ( position actuelle) et Dt2 (position précédente)
if(Dt1[0]!=Dt2[0] || Dt1[1]!=Dt2[1]) //si il y a une différence sur l une des deux ordonnées
{
//ton code ou tu checkes les > ou < fonction de tes besoins
}
//puis le stockage en Dt2 des coordonnées actuelles
Dt1[0]=Dt2[0] ;
Dt1[1]=Dt2[1];
//fin de la boucle
}



martinletiec

merci karistouf, c'est une bonne nouvelle ça va simplifier les montages
A bientôt
Martin

Go Up