Go Down

Topic: [RESOLU] Problemes liés aux tempo (Read 907 times) previous topic - next topic

B@tto

Bin tu multiplies mon code par 4 et de changer les variables :)

bricopin

Oui, mais ça oblige à tester les vérins 1 par 1 .
Or, il faut qu'ils fonctionnent par paire

B@tto

Bin tu rassemblent les conditions alors

fdufnews

Quote
Mais, s'ils arrivent en butée "ouverture", ils doivent s'arrêter instantanément.
Or pour le moment, ils ne le font pas.

Ben oui parce que ton pas d'échantillonnage est de 5s (ou 3 dans le deuxième code). Ton vérin peut arriver en butée à n'importe quelle moment.
Tu peux très bien tester ne pas le trouver en butée. Alimenter pour 5s et là il arrive en butée tout de suite mais comme tu as un delay() le code est bloqué le temps de ce délai.

Il ne faudrait pas fonctionner comme cela.
Il faut faire une boucle utilisant millis() afin de gérer le temps et tester dans la boucle tes entrées et pouvoir ainsi réagir immédiatement à l'arrivée en butée.

bricopin

#9
Jan 29, 2013, 10:02 pm Last Edit: Jan 29, 2013, 10:05 pm by bricopin Reason: 1
Bon, en fait, j'ai testé mes 2 vérins à l'intérieur d'une boucle "for".
Ca fonctionne bien.
Code: [Select]
      if (NIVAVAR_REF_0 <= NIVAVAR_AV_M) {
        for ( x = 0; x <= 100000; x++){         
          VAL_CVOAVG = digitalRead (CVOAVG);
          if (VAL_CVOAVG == LOW){
            digitalWrite(AVGRO, LOW);
          }
          digitalWrite(AVGRO, HIGH);
          VAL_CVOAVD = digitalRead (CVOAVD);
          if (VAL_CVOAVD == LOW){
            digitalWrite(AVDRO, LOW);         
          }   
          digitalWrite(AVDRO, HIGH);
        }

Je passe le post en "RESOLU"
Bonne soirée et merci
JP

Go Up