Accueil > ... > Forum 446

Mise en œuvre d’un servo-moteur

18 janvier 2016, 23:30

Bonsoir,

Meilleurs vœux également.

Pour faire un allez-retour lent et un seul, c’est assez simple. Le servo est à son angle initial avec une vitesse de 0. Sur un événement, pression d’un bouton par exemple, la vitesse est mise à 1. Le servo commence son mouvement, quand il atteint son angle maximum, la vitesse est mise à -1, il revient. Quand l’angle atteint l’angle minimum, la vitesse passe à 0 et le servo s’arrête. Le programme serait le suivant :

#include <Servo.h>
 
const int angleMin  = 70;
const int angleMax = 110;
 
const byte pinServo = 2;
const byte pinBouton = 3;

Servo monServo;
int vitesse;
int angle;
 
/*
 * La fonction setup() est exécutée 1 fois
 * au démarrage du programme
 */
void setup()
{
    pinMode(pinBouton, INPUT_PULLUP);
    monServo.attach(pinServo);
    angle = angleMin;
    vitesse = 0;
}
 
/*
 * La fonction loop() est exécutée
 * répétitivement
 */
void loop()
{
    if (digitalRead(pinBouton) == LOW && vitesse == 0) {
        vitesse = 1;
    }

    monServo.write(angle);
    /* calcule le nouvel angle */
    angle = angle + vitesse;
 
    if (angle > angleMax) {
        /* 
         * le nouvel angle dépasse le maximum
         * on le recale au maximum et on inverse la vitesse
         */
        angle = angleMax;
        vitesse = -1;
    }
    else if (angle < angleMin) {
        /*
         * le nouvel angle dépasse le minimum
         * on le recale au minimum et on inverse la vitesse
         */
        angle = angleMin;
        vitesse = 0;
    }
    delay(25);
}

Un message, un commentaire ?

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)