Tutorial Arduino n.05
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:
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 🙂
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.
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:
Dimostrazione:
Commenti