Slide associata

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

Valid XHTML 1.0! Valid CSS!