Bonjour,
J'ai vraiment une question bête et idiote, mais je arrivé à me poser cette question
Avant le setup() j'ai déclarer cette variable
boolean firstCoords = false;
Elle me sert a envoyer un SMS des la premiere position GPS est recu, uniuqmenet.
Dans mon loop(), j'ai ceci
void loop()
{
if(readyToGo)
{
// Toutes les 20sec, regarde s'il recoit du GPS
// SCHEDULER TO GET GPS COORDINATE at an interval of INTERVAL_GPS
if (millis() > scheduler_gps)
{
scheduler_gps = millis() + INTERVAL_GPS;
// Si les stat du GPS est supérieur à 1 (2 Fix ou 3 Fix
if(gps_stat() > 1)
{
// Prends les posisitions et envoi les au serveur distant
if(gps_read())
{
#ifdef DEBUG
Serial.print(F(" Lat : ")); Serial.println(lat);
Serial.print(F(" Lon : ")); Serial.println(lon);
Serial.print(F(" Alt : ")); Serial.println(alt);
Serial.print(F(" Date : ")); Serial.println(dat);
Serial.print(F(" Sat : ")); Serial.println(sat);
Serial.print(F("\n"));
#endif
// Si c'est la premiere fois, envoi un SMS
if(firstCoords == false)
{
sprintf(sms_text,"First coords received, Lat: %s, Lon: %s, Alt. %s, Tim: %s",lat,lon,alt,dat);
// Envoi SMS avec les coords
if(sms_send(owner,sms_text))
{
// Si envoyé met à true
firstCoords = true;
#ifdef DEBUG
Serial.println(F("> SMS sent"));
#endif
}
else
{
#ifdef DEBUG
Serial.println(F("> SMS not sent"));
#endif
}
}
// SEND DATAS
send_HTTP();
} // end gps_read
} // end if gps_stat
} // End timer
}
#ifdef DEBUG
serialhwread();
#endif
}
Le truc de fou c'est qu'il m'envoi deux fois un SMS.
Puis j'ai lancé une seconde fois en regardant mes debug sur le terminal avec un
Serial.println(firstCoords)
placé en dessous de mes 4 autres Serial.println(lat),
et... je vois que le firstCoords affiche,
une fois 0
une fois 1
puis 0
puis une chiffre supéreur à 1 !!!!!!!!
Supérieur à 1????? Mais es-ce possible pour un boolean???
Je me suis donc demandé si je devrais pas déclaré firstCoords, en int.
Comme ceci, je controlle juste si firstCoords est inf à 1
if(firstCoords < 1)
En regardant ma loop(), comment firstCoords peut revenir à false, puisqu'é aucun moment il est mis à false?????
D'ou ma question bête..
Bonne nuit