You are on page 1of 6

GESTIONE DI UN SERVO MOTORE

SCOPO: gestire un servo motore con un potenziometro e successivamente gestirlo attraverso un


potenziometro e un pulsante collegato a un led.

MATERIALI: servo motore, Arduino, potenziometro, breadboard, pulsante, led, cavo USB, cavi per eseguire i
collegamenti.

CENNI TEORICI:

1)The components that we are going to use in this two experiences are:

- breadboard: to create our electrical circuit;

- USB cable: to connect our Arduino at the computer. Moreover the USB cable provides the correct power
source tension to Arduino’s card;

- light emitting diode: component that emit light when it is crossing by current. It has two pins: anode (+)
and cathode (-). We connect anode to one of the Arduino’s digital pin and cathode at the GND. Anode is the
longer pin, and cathode is the shorter;

- potentiometer: is a variable resistor, that changes value, when its handle is turned. It is composed of
three pins. The extremes pins are connected at the 5V pin and the other one at the GND. The middle pin is
connected at one of Arduino analogical pin;

- servomotor: a device system who is able to make mechanical movement in function of the signal
applicated at his entrance. He is composted by 3 pins: the yellow one  at Arduino digital pin, the red one at
the 5V and the brown one at the GND;

- resistance: an electrical component that oppose the passage of current. The unit of measurement is Ohm
(Ω). The coloured stripes represent the value of the resistance;

- button: when we pressed it allows the passage of current;

- Arduino: an hardware platform to control circuit by programs. Mainly is composed by a microcontroller,


14 digital pins and 6 analogical pins.

2)The commands used to create the two software’s in Arduino are:

- #include: to insert the library to create programs. In this case we are going to use: #include<Servo.h> to
insert some functions of servomotor;

- void setup (): to initialize variables;

-void loop (): to write the program;

- {} : to define the begin and the end of the block of instructions;

- ; : at end of every  instruction, to separate it from the next;

- int : declaration of entire variable;

- instruction if …. else : if the condition is respected the program can do the instructions inside it, otherwise
it skips the block of instruction moving on the following in the else part;
- pinMode : composed by two parts, the first configurates one of Arduino’s pins, while in the second part
we put INPUT or OUTPUT. The structure of pinMode is: (pin, INPUT/OUTPUT);

- digitalWrite: composed by two part: the first indicated the pin and the second indicates the status of the
pin. HIGH or LOW. the structure of digitalWrite is (pin, status).  For example digitalWrite (9,HIGH); is this
case the light emission diode is turn off. if we put LOW the light emission diode is turn off;

- digitalRead: read the state of digital pin;

- Serial.begin : communication between Arduino and our Computer;

-Serial.println : to print informations on the serial monitor on the computer;

- analogRead: read the value of an analogical pin;

- delay : stops the program for a period of time expressed in milliseconds. for example: delay(1000); the
program in this case waits one second;

- map: transforms a number from one variable to another variable by using a proportion. the structure of
map is : map(var, var min, var max, in min, in max): 

var: the value to transform;

var min and var max: are the minimal and the maximal number of the variable var in entrance.

in min and in  max: are the minimal and the maximal number of the new variable in exit.

PROCEDIMENTO CON PRINCIPIO DI FUNZIONAMENTO DEL PROGRAMMA:

1) Procedimento e funzionamento del  programma per quanto riguarda la gestione del servomotore con il
potenziometro.

1)collegamento motore

 -filo giallo: porta digitale del pin 3 di Arduino;

 -filo rosso: posizionare sul + della breadboard;

-filo marrone : – della breadboard;

2)collegamento potenziometro

-filo centrale: porta analogica del pin A0 di Arduino;

- fili alle estremità: uno ai 5V e l’altro alla GND

3)collegamento Arduino

- Gnd di Arduino: alla breadboard.


-collegare Arduino al computer tramite cavo USB.

Una volta caricato il programma sulla scheda di Arduino e dopo aver girato la manopola del potenziometro,
Arduino andrà a legge il valore del potenziometro sul piedino A0, che verrà assegnato a una variabile
chiamata “pot”. Il valore della variabile “pot” verrà convertito, tramite la funzione   “map”, in un valore
adatto al servo motore e il valore trasformato lo salverà in una variabile chiamata “mot”. Il valore di mot
verrà inviato al servo motore che eseguirà il movimento. Il programma aspetterà poi 50 ms prima di
ripetere il ciclo. Questo tempo serve anche al servomotore per poter raggiungere la posizione assegnata.

2) Procedimento e funzionamento del programma per quanto riguarda la gestione del servo motore con
potenziometro, pulsante e led.

1)collegamento motore

 -filo giallo: porta digitale del pin 3 di Arduino;

 -filo rosso: posizionare sul + della breadboard;

-filo marrone: sul – della breadboard;

2)collegamento potenziometro

-filo centrale: porta analogica del pin A0 di Arduino;

- fili alle estremità: uno ai 5V (+ breadboard) e l’altro alla GND (- breadboard)

3)collegamento Arduino

-Gnd di Arduino: alla breadboard.

-collegare Arduino al computer tramite cavo USB.

4) collegamento led

- collegare catodo alla GND, mentre anodo con una resistenze al pin 9 di Arduino. Per riconoscere anodo e
catodo guardare piedini led. Piedino più lungo è l’anodo mentre quello più corto è il catodo.

5)collegamento pulsante:

-posizionare il pulsante e la resistenza sulla breadboard come mostrato in figura:

-collegate il filo rosso - breadboard (GND), 

-filo  verde al pin 5 di Arduino;

-filo  nero al + breadboard (5V):

6)collegare generatore di tensione impostato sui 5 V fissi. Il cavo nero uscente dal generatore posizionarlo
sul – della breadboard, mentre l’altro sul + .

Una volta caricato il programma sulla scheda di Arduino, Arduino controllerà se il pulsante è stato premuto
oppure no. Se il pulsante non sarà stato  premuto il motore e il led saranno spenti. Per vedere se lo stato
del pulsante useremo il monitor seriale, dove comparirà 1 se pulsante è premuto e 0 quando non è
premuto. Quando il pulsante è premuto, si accenderà il led e  Arduino leggerà il valore del potenziometro
sul pin A0 e assegnerà il valore letto a una variabile chiamata “pot”. Successivamente trasformerà questo
valore in un valore adatto per il servomotore tramite la funzione “map”, che assegnerà il valore trasformato
alla variabile “mot”. Dopo di chè il valore della variabile “mot” verrà mandato al servo motore che eseguirà
il movimento. Prima di ripetere il ciclo il programma aspetterà 50 ms. Questo tempo serve anche  al
servomotore per poter raggiungere la posizione assegnata.

DESCRIZIONE PROGRAMMA CON COMMENTI:

1)Descrizione del programma del servo motore gestito da un potenziometro

#include <Servo.h>  // include le librerie del servomotore.

Servo Myservo;  //assegno il nome al servomotore.

int pot=0; //variabile dove verrà inserito il valore del potenziometro.

int mot=0; //variabile dove viene inserito il valore convertito del potenziometro.

int M1=3;//pin servomotore.

int var= A0;//pin analogico dove è collegato il potenziometro.

void setup() { // inizializza le variabili che verranno usate nel programma.

Myservo.attach(M1); //pin  dove è collegato il servomotore.

pinMode(A0, INPUT);//pin del potenziometro impostato ingresso.

void loop() {//contiene le istruzioni del programma da eseguire.

pot=analogRead(var);// Arduino legge valore potenziometro.

mot=map(pot,0,1023,0,180); //converte il valore del potenziometro che va da 0 a 1023, in valori che vanno
da 0 a 180,tramite una proporzione, che sono i gradi che il servomotore può assumere. Valore mot sarà da
0 a 180.

Myservo.write(mot); //posizione del servo motore in base al valore della variabile mot.

delay(50); // aspetta 50 ms prima di ripartire con il ciclo della funzione loop. Questa pausa serve anche al
servomotore per raggiungere la posizione assegnata dal potenziometro.

 }

2)Descrizione del programma del servo motore gestito da potenziometro, pulsante e led.

  #include <Servo.h> //include le librerie del servomotore.

  Servo Myservo; //assegno il nome al servomotore.


  int pot=0;// variabile dove verrà inserito il valore del potenziometro.

  int mot=0;//variabile dove verrà inserito il valore convertito del potenziometro.

  int M1=3;//pin servomotore.

  int var= A0;//pin analogico dove è collegato il potenziometro.

  int pulsante=5;//pin pulsante usato come ingresso.

  int led=9;//pin led usato come uscita.

  int pul=0; //variabile pulsante.

  void setup() {//inizializza le variabili che andremmo ad usare nel programma.

  Myservo.attach(M1); //pin dove è collegato il servomotore.

  pinMode(A0, INPUT);//pin del potenziometro impostato come entrata.

  Serial.begin (9600);// Prepara Arduino a mandare e ricevere i dati tramite la porta seriale. In questo caso
riceve i dati del pulsante.

  digitalWrite(9, OUTPUT);//pin led impostato come uscita.

  digitalWrite(5, INPUT);//pin pulsante impostato come ingresso.

  void loop() {//contiene le istruzioni del programma da eseguire.

  pul=digitalRead(5); //viene assegnato alla variabile pul lo stato del pulsante.

  Serial.println(pul);//vedo sul monitor seriale se pulsante è premuto. Se pulsante premuto compare 1


altrimenti 0.

  if(pul==HIGH){   //se pulsante premuto.

  digitalWrite(9,HIGH);//led si accende.

  pot=analogRead(var);// Arduino legge valore potenziometro.

  mot=map(pot,0,1023,0,180);//converte il valore del potenziometro che va da 0 a 1023, in valori che vanno


da 0 a 180, tramite una proporzione, che sono i gradi che il servomotore può assumere . Il valore mot sarà
da 0 a 180.

  Myservo.write(mot);//posizione del servo motore in base al valore dalla variabile mot.

  delay(50);// aspetta 50 ms prima di ripartire con il ciclo della funzione loop. Questa pausa serve anche al
servomotore per raggiungere la posizione assegnata dal potenziometro.

  }

  else{  //altrimenti se il pulsante non è premuto.

  digitalWrite(9, LOW);//led e motore spenti.


  }

  }

CONCLUSIONI

To sum up, the project that we had to do today, allowed us to control a servomotor in 2 different ways. The
first was with the potentiometer and the second with a button that turns on or off the servomotor.

The project that we did can be re-used in the future. For example  we can create a radar, adding sensors.
The radar task is to observe if there are or not objects and send to Arduino where the object is and its
distance. Al the program are controlled by a potentiometer, who lead the radar. The led we can use to
signal if the radar is moving and buttons to turn on and off or move right or left the sensor.

You might also like