Je viens de le déplacer dans l’épisode 8 qui traite justement les servos.
L’idée est de faire des petites routines que tu vas appeler depuis loop().
On peut partir du programme que j’ai proposé initialement.
// Papa01
//
// Evolutions
// v0.1 première version (pas testée)
// Un serveur moteur a un connecteur à trois fils : +, - et signal.
// le + est typiquement de couleur rouge et doit être connecté au 5V de l'Arduino
// le - est typiquement de couleur marron ou noir et doit être connecté au GND de l'Arduino
// le signal est typiquement de couleur jaune ou orange et doit être connecté à une sortie digital
// inclure les définitions pour la commande d'un servo
#include <Servo.h>
// utiliser une PIN pour envoyer un signal PWM sur le servo
#define SERVO_PIN 6
// créer un objet Servo
// documentation Arduino : https://www.arduino.cc/reference/en/libraries/servo/
Servo servoPapa;
// variable pour stocker l'angle de variation
int servoAngle;
// quelques paramètres
int angle_initial = 0;
int angle_final = 100;
int increment = 1; // increment d'angle entre deux mouvements
int vitesse = 10; // délai en ms entre deux mouvements
int pause_xx = 1000; // 1 seconde
int pause_yy = 2000; // 2 secondes
void Ouvre()
{
digitalWrite(LED_BUILTIN,HIGH);
for (int i=angle_initial;i<=angle_final;i=i+increment) {
servoPapa.write(i); // positionne sur l'angle i
delay(vitesse); // impacte la vitesse d'ouverture
}
Serial.println("Ouvert");
}
void Ferme()
{
digitalWrite(LED_BUILTIN,LOW);
for (int i=angle_final;i>=angle_initial;i=i-increment) {
servoPapa.write(i); // positionne sur l'angle i
delay(vitesse); // impacte la vitesse de fermeture
}
Serial.println("Fermé");
}
// le code de démarrage du Nano
void setup() {
// debug mode sur la console de l'IDE
Serial.begin(57600); // mettre la même valeur que dans ta console, 9600 éventuellement mais c'est lent :)
// pour afficher l'état, utilise la led interne à l'Arduino
pinMode(LED_BUILTIN,OUTPUT);
digitalWrite(LED_BUILTIN,LOW);
// attache le PIN utilisé pour le servo pour lui envoyer un signal.
servoPapa.attach(SERVO_PIN);
}
// le code executé en permanence
void loop() {
Ferme();
delay(pause_xx);
Ouvre();
delay(pause_yy);
}
Pas testé en cas de problème, dis moi je monte la manip