Auteur Sujet: Cde Servos  (Lu 30291 fois)

ferdi68

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Cde Servos
« le: février 19, 2018, 01:20:12 pm »
que dois-je faire pour commander un servo avec un bouton
: une impulsion demmarage du servo , 2eme impulsion retour dans sa position initiale

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Cde Servos
« Réponse #1 le: février 19, 2018, 02:45:26 pm »
Bonjour,

Avant de répondre : le code que vous aviez du mal a compiler fonctionne ?
Cordialement

ferdi68

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Cde Servos
« Réponse #2 le: février 19, 2018, 04:25:04 pm »
oui , le servo fonctionne et l'angle de 90° est correct, le servo fait des va et vient

CATPLUS

  • Sr. Member
  • ****
  • Messages: 408
    • Voir le profil
Re : Cde Servos
« Réponse #3 le: février 19, 2018, 05:15:30 pm »
Bonjour

As-tu regardé ce post?

http://forum.locoduino.org/index.php?topic=222.0

Cordialement
Marcel
Best Regards

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Cde Servos
« Réponse #4 le: février 20, 2018, 09:32:39 am »
Comme vous débutez, commencez par programmer l’allumage et l’extinction de la led connectée à la broche 13 de l’Arduino avec un poussoir.

Pour gérer le poussoir et détecter les impulsions, utilisez la bibliothèque Bounce2 que vous pouvez installer facilement via le gestionnaire de bibliothèques. L’exemple « change » correspond à ce que vous attendez.

Ps : où est passé le fil de discussion sur vos problèmes de compilation ?
« Modifié: février 20, 2018, 09:36:37 am par Jean-Luc »
Cordialement

ferdi68

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Cde Servos
« Réponse #5 le: février 27, 2018, 04:14:04 pm »
bonjour,
tout cela est ok et je viens de charger la biblio de Modeleisenbahn N concernant la commande du servo avec un bouton poussoir et ca fonctionne bien
ce que j'aimerais savoir c'set
1. comment ralentir le mouvement du servo
2. que dois-je faire maintenant pour rajouter d'autres servos avec leurs boutons correspondant?
Merci de votre aide

ferdi68

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Cde Servos
« Réponse #6 le: février 28, 2018, 09:53:24 am »
#include <Servo.h>
 
const byte SERVO_A_ANGLE_MIN = 0;
const byte SERVO_A_ANGLE_MAX = 1;
const byte SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX = 2;
const byte SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN = 3;
 
const int angleMin = 900;
const int angleMax = 1750;
 
Servo monServo;
int vitesse = 0;
int angle = angleMin;
byte etatServo = SERVO_A_ANGLE_MIN;
 
const int pinBouton = 0; /* le bouton est connecté à la broche A0 */
 
const boolean PRESSE = true;
const boolean RELACHE = false;
 
boolean etatBouton = RELACHE;
 
const byte AUCUN_EVENEMENT = 0;
const byte EVENEMENT_PRESSE = 1;
const byte EVENEMENT_RELACHE = 2;
 
/*
 * fonctions de gestion du poussoir
 */
boolean lirePoussoir()
{
    boolean resultat = RELACHE;
    if (analogRead(pinBouton) > 512) {
        resultat = PRESSE;
    }
    return resultat;
}
 
byte lireEvenement()
{
    byte evenement;
    boolean nouvelEtat = lirePoussoir();
    if (nouvelEtat == etatBouton)
        evenement = AUCUN_EVENEMENT;
    if (nouvelEtat == PRESSE && etatBouton == RELACHE)
        evenement = EVENEMENT_PRESSE;
    if (nouvelEtat == RELACHE && etatBouton == PRESSE)
        evenement = EVENEMENT_RELACHE;
    etatBouton = nouvelEtat;
    return evenement;
}
 
/*
 * La fonction setup() est exécutée 1 fois
 * au démarrage du programme
 */
void setup()
{
  monServo.attach(2);
}
 
/*
 * La fonction loop() est exécutée
 * répétitivement
 */
void loop()

{
    /* actualisation de l'angle du servo */
    monServo.writeMicroseconds(angle);
 
    angle = angle + vitesse;
 
    if (angle > angleMax) {
        angle = angleMax;
        vitesse = 0;
        etatServo = SERVO_A_ANGLE_MAX;
    }
    else if (angle < angleMin) {
        angle = angleMin;
        vitesse = 0;
        etatServo = SERVO_A_ANGLE_MIN;
    }
 
    /* lecture de la commande de l'utilisateur */
    byte evenement = lireEvenement();
 
    if (evenement == EVENEMENT_PRESSE) {
        switch (etatServo) {
            case SERVO_A_ANGLE_MIN:
            case SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN:
                vitesse =  1;
                etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX;
                break;
            case SERVO_A_ANGLE_MAX:
            case SERVO_EN_MOUVEMENT_VERS_ANGLE_MAX:
                vitesse = -1;
                etatServo = SERVO_EN_MOUVEMENT_VERS_ANGLE_MIN;
                break;
        }
    }
 
    delay(3);

ceci est le programme actuel qui fonctionne
j'aimerais commander mes 10 portes de dépot alors que dois je faire
Cordialement
Fernand

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Cde Servos
« Réponse #7 le: février 28, 2018, 10:12:59 am »
Bonjour,

Oui c'est moi qui ait écrit ce programme.

Ceci dit entretemps de l'eau a coulé sous les ponts et quasiment tout ce qui est dans ce programme a été mis dans un bibliothèque qui offre plus de possibilités. Notamment un mouvement avec phase d'accélération, décélération et amortissement pour simuler un mouvement de porte.

Cette bibliothèque, SlowMotionServo, est disponible via le gestionnaire de bibliothèques de l'IDE. Allez dans Croquis > Inclure une bibliothèque > Gérer les bibliothèques. Dans la case Filtrez votre recherche, tapez SlowMotionServo.

Vous avez donc 5 remises, 10 portes, 10 servos et 5 boutons poussoir ?
Cordialement

ferdi68

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Cde Servos
« Réponse #8 le: février 28, 2018, 11:22:19 am »
Bonjour et merci de votre reponse
J'ai en fait une remise avec 5 portes, donc 10 demi-portes a commander
je vais de ce pas chercher votre nouvelle biblio
merci
Fernand

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Cde Servos
« Réponse #9 le: février 28, 2018, 11:23:26 am »
Je suis en train de préparer l'article explicatif
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Cde Servos
« Réponse #10 le: février 28, 2018, 12:13:17 pm »
Notez qu'il y a assez de broches sur un Uno ou un Nano pour brancher les 10 servos et 5 boutons indépendants, pas la peine de mettre plusieurs boutons sur une entrée analogique.

Cordialement

CATPLUS

  • Sr. Member
  • ****
  • Messages: 408
    • Voir le profil
Re : Cde Servos
« Réponse #11 le: février 28, 2018, 07:01:58 pm »
Bonsoir

A voir ou a revoir (en anglais ... :)


http://model-railroad-hobbyist.com/node/24316

Cordialement
Marcel
Best Regards

ferdi68

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Cde Servos
« Réponse #12 le: mars 01, 2018, 02:01:31 pm »
Merci Jean-Luc
Le SlowMotionServo c'est super mais comment l'intégrer dans le programme avec la commande bouton?
Cordialement
Fernand

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2899
  • 100% Arduino et N
    • Voir le profil
Re : Cde Servos
« Réponse #13 le: mars 01, 2018, 03:14:48 pm »
La bibliothèque SlowMotionServo va bientôt être expliquée dans un article (réponse 9).
Cordialement,
Dominique

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1691
    • Voir le profil
Re : Cde Servos
« Réponse #14 le: mars 02, 2018, 12:13:55 pm »
Bonjour,

Je viens de publier la version 1.0.3. La mise à jour s'effectue comme l'installation. Il y a un exemple avec 2 servos et un poussoir qui correspond à une double porte de remise.
Cordialement