In questo articolo vedremo come utilizzare i servo motori per i nostri progetti realizzati con Arduino. Come ad esempio far sterzare il nostro robot, oppure direzionare un laser! Grazie al loro ratio di ingranaggi permettono di sviluppare molta forza in poco spazio.

Materiale hardware

Arduino Uno
Cavi Dupont
Servo 9G

Materiale Software

Procedura     

Per prima cosa, colleghiamo il servo motore all’Arduino UNO, come da immagine:

Il filo di colore arancione è quello dei dati, e andrà collegato ad uno dei pin digitali dell’Arduino. Il filo di colore marrone è la massa (GND) e va collegato ad uno dei pin GND di Arduino. Il filo di colore rosso è l’alimentazione, e va collegato al pin 5V di Arduino.

Nel caso si vada ad utilizzare servo motori che consumano più di 500mA è consigliabile utilizzare una sorgente di alimentazione esterna, mettendo la massa in comune con Arduino. Questo perchè il pin 5V di Arduino è in grado di erogare massimo 500mA, che se superati, c’è il rischio di danneggiare il regolatore presente sulla scheda.

Una volta effettuati i collegamenti passiamo alla programmazione della scheda. Apriamo l’IDE di Arduino e incolliamo un semplice sketch che ci permetterà di ruotare il servo in base ai gradi che impostiamo.

#include <Servo.h>
// Crea oggetto servo1 dalla libreria servo
Servo servo1;  

void setup() {
// Inizializza servo1 su pin 6
  servo1.attach(6);  

}

void loop() {
// Imposta il servo a 180 gradi
  servo1.write(180);                 
  delay(200);    
// Imposta il servo a 160 gradi
  servo1.write(160);                 
  delay(200);
// Imposta il servo a 110 gradi
  servo1.write(110);                 
  delay(200);
// Imposta il servo a 90 gradi
  servo1.write(90);                 
  delay(200);
// Imposta il servo a 60 gradi
  servo1.write(60);                 
  delay(200);
// Imposta il servo a 30 gradi
  servo1.write(30);                 
  delay(200);
// Imposta il servo a 10 gradi
  servo1.write(10);                 
  delay(200);                
}

Una volta caricato il servo inizierà a muoversi nei vari angoli impostati. L’istruzione che permette di impostare il servo ad un determinato angolo è: servo1.write(°Angolo);

Lo sketch di esempo modificherà l’angolo del servo ogni 200 millisecondi.

In caso si voglia utilizzare più di un servo motore è possibile creare un ulteriore oggetto Servo ed inizializzarlo, ad esempio:

#include <Servo.h>
// Crea oggetti servo1 e servo2 dalla libreria servo
Servo servo1, servo2;  
void setup() {
// Inizializza servo1 su pin 6
  servo1.attach(6);  
// Inizializza servo2 su pin 7
  servo1.attach(6);
}
void loop() {
// Imposta il servo 1 a 180 gradi
  servo1.write(180);  

// Imposta il servo 2 a 0 gradi
  servo2.write(0);                 
            
}

In questo sketch di esempio inizializziamo 2 servo chiamati rispettivamente servo1 e servo2 sui pin digitali 6 e 7, dopodiché nella funzione loop li impostiamo a 180 e 0 gradi.

Conclusione

Il servo utilizzato in questo articolo è un modello di tipo 9G, dicitura che troviamo molto spesso nell’acquisto di questi motori, che sta ad indicare il loro peso (senza i cavi di collegamento), utile nella scelta in caso di costruzione di un aeromodello.

Manipolando le varie istruzioni sarà possibile adattarle ad ogni progetto che necessita di un servo o più, per qualsiasi dubbio o domanda lascia un commento.