Muoviamo un motore servo RC con Arduino¶
- Table of contents
- Muoviamo un motore servo RC con Arduino
Utilizzando la funzione write()
della libreria Servo di Arduino possiamo muovere un motore servo standard indicando l'angolo di rotazione dell'albero in gradi.
I motori standard possono ruotare da 0° a 180°, quindi il valore che utilizziamo nella funzione deve essere compreso tra 0 e 180.
Portiamo il motore standard in posizione centrale¶
Per portare un motore standard in posizione centrale dobbiamo inserire nella funzione il valore 90.
Nel nostro esempio porteremo un motore collegato al pin D2 in posizione centrale:
#include <Servo.h> // importiamo la libreria per controllare i motori servo Servo servo1; // creiamo un'istanza di Servo e la nominiamo servo1 void setup() { servo1.attach(2); // colleghiamo l'istanza al pin D2 servo1.write(90); // portiamo il servo in posizione centrale } void loop() {}
Muoviamo il motore¶
Utilizzando ripetutamente la funzione write()
possiamo muovere il motore dalla posizione centrale ad altre angolazioni.
È da notare l'utilizzo della variabile pausa
, che introduce un'attesa tra un comando e il successivo: è importante utilizzare una pausa poiché un motore impiega un certo tempo per spostarsi da una posizione all'altra e se riceve un nuovo comando prima di aver raggiunto la posizione può cominciare ad avere problemi di funzionamento.
Per determinare il valore minimo della pausa è opportuno consultare la scheda tecnica del motore e verificare la sua velocità operativa.
Il valore della variabile è espresso in millisecondi.
#include <Servo.h> // importiamo la libreria per controllare i motori servo Servo servo1; // creiamo un'istanza di Servo e la nominiamo servo1 int pausa = 800; // creiamo una variabile che useremo come valore della pausa void setup() { servo1.attach(2); // colleghiamo servo1 al pin D2 servo1.write(90); // portiamo il servo in posizione centrale } void loop() { delay(pausa); // inseriamo una pausa prima del comando successivo servo1.write(175); // portiamo il servo a 175° delay(pausa); servo1.write(85); // portiamo il servo a 85° delay(pausa); servo1.write(10); // portiamo il servo a 10° delay(pausa); servo1.write(90); // portiamo il servo in posizione centrale }
Riferimenti¶
Arduino - Servo write()
Make: Arduino Bots and Gadgets, by Kimmo Karvinen and Tero Karvinen (O’Reilly). Copyright 2011 O’Reilly Media, 978-1-449-38971-0.