2° esempio SERVO MOTORE + SLIDEPOT
Per sviluppare questo progetto occorre costruire il circuito (serve un servo motore e un potenziometro a cursore) visualizzato nella seguente immagine:

Ecco l'immagine del circuito

Codice Sorgente
Obiettivo progetto: Costruire un programma che consenta di pilotare l'angolo del braccio di un servo motore mediante un potenziometro a cursore.
soluzione:
Occorrerà quindi decodificare il valore in input (range da 0 a 1023), relativo allo stato del potenziometro a cursore, con il corrispondente angolo (range da 0 a 179) del braccio del servo motore. La funzione map(valore,A,B,c,d), che riscala il primo argomento valore, appartenente all'intervallo [A,B] all'interno dell'intervallo [c,d], ci consentirà di effettuare la decodifica richiesta. Il seguente sketch rappresenta una delle possibili soluzioni al nostro progetto
/* -----------------------------------------------------------------------------------
Esempio creato partendo dal codice: Sweep di pubblico dominio.
Muove a sinistra e destra di 180 gradi il servomotore
----------------------------------------------------------------------------------- */
#include <Servo.h>
#define PotPin 0 // Pin analogico collegato al potenziometro
Servo myservo; // Creo un oggetto Servo per controllare il motore
int valpot; // variabile utilizzata per leggere il pin del potenziometro
int valmot; // variabile utilizzata per indicare l'angolo del servo motore
void setup()
{
Serial.begin(9600);
myservo.attach(9); // attacco il Servo al pin 9 (imposto angolo)
}
void loop()
{
valpot = analogRead(PotPin); // legge il valore sul potenziometro (tra 0 e 1023)
valmot = map(valpot, 0, 1023, 0, 179); // lo riscala per utilizzarlo come angolo del Servo (valore tra 0 e 179)
myservo.write(valmot); // setta la posizione del servo
}