Cosa impareremo: 

Useremo un servomotore collegato ad un potenziometro per indicare se l’ospite fuori la nostra camera è gradito, mi spiegherò meglio mostrandovi il progetto. I Servomotori sono dei motori che non ruotano in modo continuo, bensì in una specifica posizione. I servomotori comuni ruotano da 0 a 180 gradi, ma possono essere anche sbloccati per farli ruotare 360,720 ecc..

Anche oggi utilizzeremo un piedino arduino PWM (se non li ricordi vedi tutorial 4).

A differenza del precedente tutorial la larghezza degli impulsi per i servo oscillerà tra i 1000 e 2000 microsecondi. Tramite una libreria di arduino controlleremo facilmente il motore map( ) .

Il servo ruota 0-180 gradi, gli impulsi oscillano da 0-1023 , con la libreria map possiamo “mappare” gli impulsi e trasformarli in angoli facilmente comprensibili da noi.

Componenti Richiesti:

 

1 Potenziometropotenziometro

1 ServoMotoreservo

2 Condensatori da 100uFcondensatore

3 piedini di un connettorePin_Header_Connector

 

Nota su alcuni componenti:

 

Come molti di voi, non ho mai avuto a che fare con potenziometri. Per chi non lo sapesse si monta in questo modo 🙂

potenziometro costruzione

Per quanto riguarda il connettore a pettine, in questo tutorial necessitiamo di 3 piedini. Armatevi di pinze e tagliate una striscia da 3 pezzi. I piedini sono di lunghezza regolabili perciò trovate la giusta misura per farli entrare sia nella breadboard che nel connettore femmina.I pin segnati con la freccetta sono della misura adatta per entrare nella breadboard.

pin costruzione

 

Programmazione:

 

//includiamo la libreria per i servo motori.
#include <Servo.h>
 
Servo myServo; /*creiamo un oggetto servo,ovvero una variabile
per il nostro servo che lo identifica,ovviamente con un nome
univoco, d'ora impoi faremo riferimento a "myServo". */
 
// DICHIARAZIONE VARIABILI
int const potPin = A0; // pin del potenziometro
int potVal; // valori degli ingressi analogici
int angle; // l'angolo del servo
 
void setup() {
 myServo.attach(9); // il piedino a cui è collegato il servo
 Serial.begin(9600); /* inizializziamo la comunicazione
 seriale(come sempre fatto,anche nei precedenti tutorial)*/
}
 
void loop() {
 potVal = analogRead(potPin); // legge i valori del potenziometro
 // e li stampa in modo che anche noi possiamo leggerli.
 Serial.print("potVal: ");
 Serial.print(potVal);
 
// le rispettive mappe di conversione valori emessi e gradi convertiti.
 angle = map(potVal, 0, 1023, 0, 179);
 
// stampa sul monitor seriale gli angoli contrassegnati affianco la scritta "angle"
 Serial.print(", angle: ");
 Serial.println(angle);
 
// il comando per ruotare il servo.
 myServo.write(angle);
 
/* un ritardo così il servo ha il tempo
 di spostarsi in una nuova posizione. */
 delay(15);
}

Schema Elettronico:

 

sketch05

 

Dimostrazione:

 

campanello

motor1