Programmazione in movimento 3b - Librerie - 6

# Rallentare il movimento

# esempio_13_servo_lento.ino

    /* esempio_13_servo_lento.ino
     * Sposta un servo tra 0, 90 e 18 gradi, uno spostamento al secondo
     */

    #include <Servo.h>

    // Creo una costante per il piedino del servo
    #define SERVOPIN 4
    #define INTERVALLO  10

    Servo attuatore;  // Creo la variabile del servo

    void ruota (Servo s, int da, int a, int tempo) {
      int t;
      for (t = 0; t < tempo; t += INTERVALLO) {
        // metto il percorso da fare in una variabile con la virgola
        float incremento = a - da;
        // Ne prendo una parte in base al tempo ntrascorso rispetto al totale richiesto
        incremento = incremento * t / tempo;
        // Pongo il servo all'angolo giusto per il tempo trascorso
        s.write (da + incremento);
        delay (INTERVALLO);
      }
      attuatore.write(a);  // Ruota a 10 gradi
    }

    void setup () {
      attuatore.attach(SERVOPIN);  // Attivo il servo sul pin indicato
    }

    void loop () {
      ruota (attuatore, 10, 170, 2000);  // Vado avanti gradualmente
      ruota (attuatore, 170, 10, 1000);  // Torno indietro gradualmente
    }

© Ing. Stefano Salvi - released under FDL licence