Page 4 sur 4

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Ven 15 Déc 2017, 18:58
par Le Garandiere
pardon Petitrain j'ai envoyer mon dernier message alors que tu venais d'écrire, pour l’histoire du bouléan c'est une erreur, j'ai revue complètement le sketch, c'est ok, je n'ai plus de mouvement intempestif des servos, j'utilise aussi #VarSpeedServo.h# (je ne trouve pas de différences avec # servo.h#), j'utilise #writeMicroseconds(x)# car le mouvement des servos est plus fuide par contre, même en enlevant les attach() du setup et dans chaque if ---> .atach() puis .write() et enfin detach. cela ne marche pas, aurais tu un exemple s'il te plais car tout ce que je vois a droite a gauche m'indique la même manier dont je procède mais sans résultat, il y à là aussi quelque chose qui m'échappe
Merci

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Sam 16 Déc 2017, 10:29
par Zebulon91
Juste au cas où.. Je t'invite à consulter ceci, que j'avais publié il y a un petit moment : viewtopic.php?f=63&t=79990#p1825502
Particulièrement la fonction 'void setServoPos(byte id, byte pos, byte speed)' presque à la fin du code.
J'ai près d'une trentaine de ces cartes en fonction, et aucun soucis de fonctionnement.

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Sam 16 Déc 2017, 13:47
par Le Garandiere
bonjour, félicitation, mais je n'en suis pas encore là, je voie effectivement la fonction que tu m’indique, mais... bref, encore une autre méthode, et là je décroche.
merci

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Sam 16 Déc 2017, 15:19
par Petitrain
Bon, apparemment ça ne marche toujours pas!!!!
tu écris:
j'utilise aussi #VarSpeedServo.h# (je ne trouve pas de différences avec # servo.h#),

Sur le github de la bibliothèque :
VarSpeedServo.h
La bibliothèque VarSpeedServo.h Arduino permet d'utiliser jusqu'à 8 servomoteurs de manière asynchrone (car elle utilise des interruptions). En outre, vous pouvez définir la vitesse d'un mouvement, éventuellement attendre (bloc) jusqu'à ce que le déplacement du servo soit terminé, et créer des séquences de mouvements qui s'exécutent de manière asynchrone.


il me semble que ça fait pas mal de différence..... :lol:
Le plus simple, quand ça ne marche pas, c'est de recommencer le code à zéro.
1 bouton, les deux leds indicatrices et un servo.(mon schémas).
J'essaye de mon coté et j'envoie le code.

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Sam 16 Déc 2017, 17:01
par Petitrain
Code: Tout sélectionner
#include <VarSpeedServo.h>  //on se sert de cette bibliothèque.

VarSpeedServo aiguilleA1;  // on crée un objet servo pour controler notre servo que l'on attachera à la broche 7.
                            // un maximum de 8 objets peuvent être créer.
#include <simpleBouton.h>   // bibliothéque qui gère les boutons

simpleBouton boutonVoie1(2); // Création d'un objet bouton sur la broche 2.

const byte ledVoie1 = 19; // On attache la broche A5 à une variable ledVoie1.

boolean compteurVoie1 = 0; // cette variable va passer de 0 à 1 à chaque appui sur le bouton
void setup() {
    pinMode(ledVoie1,OUTPUT);  // on initialise la broche en sortie

}

void loop() {
/***************************GESTION DES BOUTONS******************************************/
/*on lit l'état du bouton et si on a un appui on passe la variable de 0 à 1 et inversement.*/
  boutonVoie1.actualiser();
    if(boutonVoie1.vientDEtreEnfonce()) { compteurVoie1=!compteurVoie1; }
/**************************GESTION DES AIGUILLES ET DES LEDS ***************************/
/* La gestion des servos( angle de déviation de 0 à 180°) necessite de positionner le servo à 90°
* en position médiane du déplacement des aiguilles. Les tests sont à faire pour chaque servo.
* Arbitrerement et pour la comprehension du code on admet que pour déplacer l'aiguille en position droite
* le servo aura un angle de 70° et pour la position déviee de 110°.
*/
  if(compteurVoie1 == 1)
  {
    digitalWrite(ledVoie1,HIGH);  //on allume la led
     aiguilleA1.attach(7);        // on attache le servo
     aiguilleA1.write(110,15,true);  // ici, 3 arguments : l'angle à atteindre,la vitesse de déplacement( de 0 à 255)
                                // pour le 3ème:true signifie qu'il faut finir le déplacement avant de faire autre chose
     aiguilleA1.detach();       // on dettache le servo
  }
  if(compteurVoie1 == 0)
  {
    digitalWrite(ledVoie1,LOW);
     aiguilleA1.attach(7);
     aiguilleA1.write(70,15,true);
     aiguilleA1.detach();
  }
}

Voilà, chez moi ça marche impeccable!!!
J'essaie avec deux servos, j'en ai retrouvé un!!!

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Sam 16 Déc 2017, 20:12
par Petitrain
Code: Tout sélectionner
#include <VarSpeedServo.h>  //on se sert de cette bibliothèque.

VarSpeedServo aiguilleA1;  // on crée un objet servo pour controler notre servo que l'on attachera à la broche 7.
                            // un maximum de 8 objets peuvent être créer.
VarSpeedServo aiguilleA2;
                           
#include <simpleBouton.h>   // bibliothéque qui gère les boutons

simpleBouton boutonVoie1(2); // Création d'un objet bouton sur la broche 2.
simpleBouton boutonVoie2(3);

const byte ledVoie1 = 19; // On attache la broche A5 à une variable ledVoie1.
const byte ledVoie2 = 18;

void setup() {
    pinMode(ledVoie1,OUTPUT);  // on initialise la broche en sortie
    pinMode(ledVoie2,OUTPUT);

}

void loop() {
/***************************GESTION DES BOUTONS******************************************/
/*on lit l'état du bouton et si on a un appui on passe la variable de 0 à 1 et inversement.*/
  boutonVoie1.actualiser();
  boutonVoie2.actualiser();
 
/**************************GESTION DES AIGUILLES ET DES LEDS ***************************/
/* La gestion des servos( angle de déviation de 0 à 180°) necessite de positionner le servo à 90°
* en position médiane du déplacement des aiguilles. Les tests sont à faire pour chaque servo.
* Arbitrerement et pour la comprehension du code on admet que pour déplacer l'aiguille en position droite
* le servo aura un angle de 70° et pour la position déviee de 110°.
*/
  if(boutonVoie1.vientDEtreEnfonce())        // on appelle l'itinéraire Voie1
  {
    digitalWrite(ledVoie1,HIGH);     //on allume la ledVoie1 déviée
    digitalWrite(ledVoie2,LOW);      // on allume la ledVoie2 droite
     aiguilleA1.attach(7);           // on attache le servo
     aiguilleA1.write(130,15,true);  // ici, 3 arguments : l'angle à atteindre(110=deviée),la vitesse de déplacement( de 0 à 255)
                                     // pour le 3ème:true signifie qu'il faut finir le déplacement avant de faire autre chose
     aiguilleA1.detach();            // on dettache le servo
     
     aiguilleA2.attach(8);
     aiguilleA2.write(50,15,true);  // 70 = droite
     aiguilleA2.detach();
  }
 
  if(boutonVoie2.vientDEtreEnfonce())       // on appelle l'itinéraire Voie 2
  {
    digitalWrite(ledVoie1,LOW);
    digitalWrite(ledVoie2,HIGH); 
     aiguilleA1.attach(7);       
     aiguilleA1.write(50,15,true);                                   
     aiguilleA1.detach();
       
     aiguilleA2.attach(8);       
     aiguilleA2.write(130,15,true);                                   
     aiguilleA2.detach();       
  }
 
}

Voilà un code pour deux servos donc 2 itinéraires.
Je l'ai testé, ça marche très bien, je pense que c'est pareil pour tes 5 itinéraires.
J'ai fait un petit dessin pour mieux préciser ma pensée.
Attention, il faut des bouton-poussoirs momentanés, les leds dessinent l'itinéraire sur le T.C.O.
J'ai enlevé les booleans car inutiles.
Bon courage, tiens-nous au courant.
Image

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Sam 16 Déc 2017, 22:23
par Le Garandiere
ça y est! ça fonctionne! :applause: en fait il me manquais l'argument #true# pour pouvoir détacher, mais si on le dit pas, on peu pas l'inventer,
merci Arduino, Railenbois, Plume, Zebulon91, ET SURTOUT :applause: Petit train :applause: pour tes interventions précises rapide et sans agacements.
à ben pour avoir ouvert une autre page pour n'oublier aucun intervenants, je viens de voir que ton sketch est exactement le même que le miens sauf que je mets la vitesse à 50 car c'est une gare cachée donc on ne voie pas les mouvements.
MISSION ACCOMPLIE et a bientôt cette foi pour mes réalisations.
NOYEU JOEL :noel:

Re: Help variante de "huit boutons, huit servos"

MessagePublié: Dim 17 Déc 2017, 14:23
par Petitrain
Bravo à toi surtout,
tu vois, il vaut mieux utiliser des bibliothèques bien faites que de réinventer la roue.
Joyeuses Fêtes et bon train