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 }