Une débutante dans le décor - Ep8 - Un servo pour l'Arduino

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é :slight_smile: en cas de problème, dis moi je monte la manip