Arduino con sensore di flessione e servomotore
In questo progetto utilizziamo un sensore di flessione per rilevare il movimento e comandare la posizione di un servomotore con Arduino.
Introduzione
In questo tutorial vediamo come utilizzare un sensore di flessione (Flex Sensor) insieme ad Arduino per controllare un servomotore.
Piegando il sensore cambia il valore letto dall’ingresso analogico di Arduino. Il programma utilizza questi valori per decidere in quale posizione deve spostarsi il servo.
È un esperimento semplice ma interessante perché rappresenta un primo passo verso la realizzazione di articolazioni robotiche, mani, bracci mobili e altri sistemi controllati dal movimento.
analogRead(),
utilizzerai la libreria Servo e controllerai
la posizione di un servomotore in funzione
della flessione del sensore.
Componenti necessari
🧰 Non hai ancora i componenti?
Un kit Arduino completo può essere utile per avere a disposizione breadboard, resistenze, cavetti, sensori e altri componenti utilizzabili anche in molti altri progetti del sito.
Vedi il kit Arduino consigliato → Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.📘 Vuoi imparare Arduino passo dopo passo?
Puoi approfondire programmazione, elettronica e realizzazione di progetti attraverso i miei libri dedicati ad Arduino.
Scopri i miei libri su Arduino → Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.Schema dei collegamenti
Il circuito utilizza il sensore di flessione sull’ingresso analogico A0, mentre il servomotore viene controllato dal pin digitale 9.
Codice Arduino
Lo sketch utilizza la libreria Servo.h. Il sensore viene letto tramite l’ingresso analogico A0 e il servomotore è collegato al pin 9.
#include <Servo.h>
Servo myservo;
int pos = 170;
int pos1 = 20;
int flexSensorPin = A0; // analog pin 0
void setup(){
Serial.begin(9600);
myservo.attach(9);
}
void loop(){
int flexSensorReading = analogRead(flexSensorPin);
// Qui puoi vedere dal Monitor Seriale i valori
// e decidere il grado del servo
// tramite le variabili pos e pos1
if(flexSensorReading < 80){
myservo.write(pos);
delay(15);
}
if(flexSensorReading > 110){
myservo.write(pos1);
delay(15);
}
Serial.println(flexSensorReading);
int flex0to100 = map(
flexSensorReading,
512,
614,
0,
100
);
Serial.println(flex0to100);
// delay(250);
}
Come funziona il programma
All’avvio Arduino apre la comunicazione seriale a 9600 baud e associa il servomotore al pin digitale 9.
Nel loop(), Arduino legge continuamente
il valore del sensore tramite:
int flexSensorReading = analogRead(flexSensorPin);
Il valore letto viene confrontato con due soglie.
In base alla lettura, il servo viene portato
in una delle due posizioni definite dalle variabili
pos e pos1.
I valori vengono inoltre inviati al Monitor Seriale, utile per osservare il comportamento del sensore e adattare le soglie al proprio componente.
Test del progetto
Una volta caricato lo sketch, apri il Monitor Seriale e piega progressivamente il sensore. Potrai osservare i valori rilevati da Arduino e verificare il movimento del servomotore.
Idee per sviluppare il progetto
Il principio utilizzato in questo circuito può essere esteso a sistemi più complessi.
- utilizzare più sensori di flessione;
- controllare più servomotori;
- realizzare una mano robotica;
- costruire un’articolazione comandata dal movimento;
- visualizzare i valori del sensore su un display.
Scarica lo sketch Arduino
Cosa hai imparato
Con questo progetto hai visto come Arduino può leggere un sensore analogico e utilizzare il valore ottenuto per controllare un servomotore.
È un concetto utile per sviluppare sistemi robotici, controlli meccanici e dispositivi che reagiscono direttamente al movimento.

