Parlons Arduino > Le logiciel DCC++

commande d'aiguillage à solénoïdes avec DCC++

<< < (3/3)

Nicolas 33000:
Bonjour Dominique, et merci pour ce lien.
...
...
Époustouflant !!!!

je prendrai le temps de lire en détail ce week-end, mes semaines sont... bien remplies !

Dominique:
Si besoin, je joindrai le logiciel complet.

J'ai ajouté récemment une file d'attente des commandes d'aiguilles (suite au messages CAN reçus) avec un délai (intervalleAiguille) de 300 ms.
Les commandes sont exécutées dans une tâche de la loop associée au temps millis().

Cela évite plusieurs commandes simultanées car les bobines des moteurs d'aiguilles appellent pas mal de courant et cela peut provoquer un parasite, voire un reset du Mega !!.Et cela indépendamment de ce que fait le gestionnaire qui, en programmant un itinéraire, peut souvent commander 2, 3 ou plus aiguilles et là, dans le gestionnaire, il n'est pas possible de placer des delay().


--- Code: ---/*
   *  Toutes les intervalleAiguille millisecodes
   */
 
  if (_AigTour + intervalleAiguille < millis()) { 
    _AigTour = _AigTour + intervalleAiguille; 
   
      if (BougeAIG[BougeAiguille])  { // bouger une seule aiguille à la fois
      if (_debug) {
        Serial.print("bouge aig ");Serial.println(BougeAiguille);
      }
      BougeAIG[BougeAiguille] = false;
      ListeAig[BougeAiguille].Bouger();     
    }
    for (int y = 0; y < MaxAIG; y++) { // recherche d'une autre aiguille pour le prochain coup
      BougeAiguille++;     
      if (BougeAiguille == MaxAIG) {BougeAiguille = 0;}
      if (BougeAIG[BougeAiguille]) break;     // sortie du for
    }
  }
--- Fin du code ---

Nicolas 33000:
Bonjour,
Je déteste être le gars qui pose une question et se barre, et là c'est bien le cas malheureusement !
Un autre projet d'envergure me fais complètement lâcher le train pour l'instant, reprise très probable cet hiver, avec le temps que nous sommes les seuls a aimer je pense !
celui qui nous force a rester a la maison ! ;-)

Navigation

[0] Index des messages

[*] Page précédente

Utiliser la version classique