Aide projet, utilisation millis().

Bah oui mais du coup ça me met que "gite" n'est pas déclaré...
Je l'ai mis au-dessus du coup, ça règle le problème, mais les leds s'allument en même temps encore une fois... c'est déprimant à la fin :confused:

Comment dire.....
Normalement avant de coder on écrit un algorithme, un pseudo code, on détermine les caractéristiques des variables (globales, locales) et comment et quand elles doivent être initialisées.
Lorsqu'on fait des modifications, on reprend les étapes précédentes cela évite de multiples itérations et des problèmes de ce genre.

Pour l'algorithme, j'en avais fait un justement..

J'ai modifié le code pour mettre gite en statique.

Bon, ça marche, si je dépasse 50 degrés, la led témoin s'allume, si j’attends encore 1 secondes, l’électroaimant s'allume. Si je dépasse l'angle indiqué pendant moins de 1s, il n'y a que la led témoin qui s'allume.

Seule problème:: La led témoin clignote !!! Allez comprendre pourquoi **

unsigned long debutgite;
float angle = abs(d);

//Si au passage précédent, on était déja penché au delà de 50°
if (gite == 1)
{
 // Et que l'on est toujours penchés
 if (angle > 50)
  // Et que le temps de Gîte est dépassé
  {
   if (millis() - debutgite > 1000)
    {
     digitalWrite(4, HIGH); // Allumer électroaimant
    }
  } 
  else  // Remise à zéro que marqueur de Gîte
  {
  gite = 0;
  digitalWrite(4, LOW); //Éteindre électroaimant
  digitalWrite(2, LOW); //Éteindre led témoin
  }
}
else
{
  if (angle > 50);
  debutgite = millis(); // On stocke le moment où la Gite à commencé...
  gite = 1; // On note le fait que l'on est en train de Gîter...
  digitalWrite(2, HIGH); // Allumer led témoin
}

Personne n'a de petite idée sur ce problème ?? Il suffit juste de régler ça et le programme sera fonctionnel pour moi, mais j'ai beau essayer de suivre l'algorithme je comprends pas pourquoi la led témoin (pin 2) clignote quand gite=0 ...
Y'a t'il un moyen de faire l'algorithme pas à pas en sachant qu'elle ligne est effectuée avec un logiciel ou autre ???

Si tu écrit les conditions de basculement de l'état de la LED. Et que tu analyses le déroulement de ton code tu devrais comprendre ce qui fait clignoter celle-ci.

fdufnews:
Si tu écrit les conditions de basculement de l'état de la LED

Je comprends pas ce que tu veux dire pas la...

justement en analysant mon programme, quand l'angle est inférieur a 50, gite est égal a 0, donc il n'effectue pas le

if (gite == 1)

Donc il ne va pas dans la condition de basculement de l'état de la led témoin.. ( état 0)

Variables:
angle (réel)
gite (binaire)
debutgite (entier)

Attribution:
pin 2: Led témoin 
pin 4: Led simulation électroaimant         

Initialisation:
gite=0  (je pars du principe que le catamaran ne gite pas)
pin 2 sortie
pin 4 sortie

ha, je crois que j'ai trouvé...

if (angle > 50);
  debutgite = millis(); // On stocke le moment où la Gite à commencé...
  gite = 1; // On note le fait que l'on est en train de Gîter...
  digitalWrite(2, HIGH); // Allumer led témoin

C'est ici non ? je doit mettre { à la place de ; juste après if(angle>50) et fermé par } ensuite ...

A priori c'est ça...

Coyotte

J'essaye demain avec le matos, merci beaucoup pour votre aide !!!

Super ça marche ! Merci beaucoup de m'avoir aidé sur ce projet et pour avoir pris le temps :).