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);
}
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 :