Parlons Arduino > Débuter

commande servo par inter

<< < (4/4)

philippe 31:
J'ai trouvé une solution afin de résoudre le problème. Je viens de faire la manip , le fonctionnement est bien
J'ai supprimé les 2 boucles dans le loop
A la place de

--- Code: ---void loop()
{
  int numServo;
 
  for (numServo = 0; numServo < 4; numServo++)
    gereServo(numServo);
   
    for (numServo = 0; numServo < 4; numServo++)
    {
    byte positionInterrupteur = digitalRead(brocheInterrupteurPourServo[i]);
   
    if (positionInterrupteur == LOW) {
      evenementServo_DROIT(numServo);
                                      }
    else                              {
      evenementServo_DEVIE(numServo);
                                      }
     }
 
  delay(3);
}
--- Fin du code ---
J'ai écrit

--- Code: ---void loop()
{
  gereServo(3);
       byte positionInterrupteur3 = digitalRead(brocheInterrupteurPourServo[3]);
        if (positionInterrupteur3 == LOW)
        {
         evenementServo_DROIT(3);
        }
        else 
        {
        evenementServo_DEVIE(3);
        }
  gereServo(2);
       byte positionInterrupteur2 = digitalRead(brocheInterrupteurPourServo[2]);
        if (positionInterrupteur2 == LOW)
        {
         evenementServo_DROIT(2);
        }
        else 
        {
        evenementServo_DEVIE(2);
        }
     gereServo(1);
       byte positionInterrupteur1 = digitalRead(brocheInterrupteurPourServo[1]);
        if (positionInterrupteur1 == LOW)
        {
         evenementServo_DROIT(1);
        }
        else 
        {
        evenementServo_DEVIE(1);
        }
     gereServo(0);
       byte positionInterrupteur0 = digitalRead(brocheInterrupteurPourServo[0]);
        if (positionInterrupteur0 == LOW)
        {
         evenementServo_DROIT(0);
        }
        else 
        {
        evenementServo_DEVIE(0);
        }
 
  delay(3);
}
--- Fin du code ---
Ce n'est pas le top en écriture de programme , mais je ne sais pas faire mieux
Je veux bien qu'il soit corrigé

Jean-Luc:
Ah mais oui mais non.

Reprend le code avec la boucle. J'ai fait une erreur, j'ai mis i au lieu de numServo


--- Code: ---void loop()
{
  int numServo;
 
  for (numServo = 0; numServo < 4; numServo++)
    gereServo(numServo);
 
  for (numServo = 0; numServo < 4; numServo++) {
    byte positionInterrupteur = digitalRead(brocheInterrupteurPourServo[numServo]);
    if (positionInterrupteur == LOW) {
      evenementServo_DROIT(numServo);
    }
    else {
      evenementServo_DEVIE(numServo);
    }
  }
  delay(3);
}

--- Fin du code ---

philippe 31:
Je viens de faire la modification . Le programme marche à merveille.

Je vais donc pouvoir commander mes aiguilles par des servos afin d'avoir des mouvements lents.
La commande se fera depuis RRTC via une centrale "Lenz" , des décodeurs d'accessoires "LTD" SA-DEC-4 et des cartes NANO .

Merci à vous pour votre aide , un merci particulier à Jean Luc
Cordialement
Philippe

DDEFF:
C'est une bonne nouvelle !

Enseignement : c'est toujours dur d'intervenir dans le programme d'un autre.
On n'ose pas le modifier en profondeur... :D

Navigation

[0] Index des messages

[*] Page précédente

Utiliser la version classique