Questo tutorial è parte di: Servomotori
Tutti i video correlati ai servomotori sono elencati qui. I link ad altri video si trovano sotto questo articolo.
Controllare un servomotore con pulsanti usando Arduino
In questo tutorial impareremo come controllare un servomotore usando due pulsanti: uno per spostarlo a sinistra e l'altro per spostarlo a destra. Quando premi il pulsante destro, il servomotore si sposterà di 10 gradi verso destra, e quando premi il pulsante sinistro si sposterà della stessa quantità verso sinistra. Se tieni premuto un pulsante, il servomotore continuerà a muoversi in quella direzione finché non lo rilasci.

Questo progetto è un ottimo modo per capire come interfacciare pulsanti con un servomotore usando Arduino. Spiegheremo i componenti hardware necessari, ti mostreremo come eseguire il cablaggio e forniremo il codice necessario per far funzionare il tutto. Per una comprensione più chiara, puoi fare riferimento al video che accompagna questo tutorial (nel video a 01:00).
Hardware spiegato
Per questo progetto, avrai bisogno di una scheda Arduino, di un servomotore e di due pulsanti. Il servomotore è responsabile del movimento, mentre i pulsanti fungono da ingressi per controllare la direzione di tale movimento. L'Arduino elabora questi ingressi e invia i segnali appropriati al servomotore.
Il servomotore funziona basandosi sulla modulazione della larghezza dell'impulso (PWM). Inviando impulsi con larghezze diverse, è possibile controllare l'angolo del servomotore. I pulsanti saranno collegati ai pin di ingresso digitali dell'Arduino e useremo le resistenze di pull-up interne per semplificare il cablaggio.
Dettagli della scheda tecnica
| Produttore | Diversi |
|---|---|
| Numero di parte | SG90 |
| Tensione logica/I/O | 5 V |
| Tensione di alimentazione | 4.8-6 V |
| Corrente di uscita (per canale) | Massimo 1,5 A |
| Corrente di picco (per canale) | 2,5 A max |
| Indicazioni sulla frequenza PWM | 50 Hz |
| Soglie logiche di ingresso | 0.3VCCfino a 0,7 Vcopia conoscenza |
| Caduta di tensione / RDS(on) / saturazione | 0,4 V |
| Limiti termici | 85 °C |
| Pacchetto | Plastica |
| Note / varianti | Rotazione standard di 180° |
- Assicurati che il servo sia compatibile con la tua tensione di alimentazione.
- Usare un dissipatore adeguato se si opera a correnti elevate.
- Collegare i pulsanti a massa con una configurazione pull-up.
- Applica il debounce ai pulsanti se riscontri comportamenti erratici.
- Monitora l'output seriale per il debug.
Istruzioni di cablaggio

Per collegare i componenti, inizia collegando il servomotore. Collega il filo rosso del servomotore al pin 5V dell'Arduino, il filo nero al pin GND e il filo di segnale giallo o bianco al pin 9 dell'Arduino. Questo pin controllerà la posizione del servomotore.
Successivamente, collega i pulsanti. Collega un terminale del pulsante destro al pin 2 e l'altro terminale a massa. Per il pulsante sinistro, collega un terminale al pin 12 e anche l'altro terminale a massa. Questa configurazione permette alle resistenze di pull-up interne di mantenere i pin al livello alto quando i pulsanti non sono premuti.
Esempi di codice e guida passo passo
Cominciamo con il codice per controllare il servo con un singolo pulsante. Il codice inizializza l'oggetto servo e imposta un angolo iniziale. Ecco un breve estratto:
int angle = 90; // initial angle for servo
int angleStep = 10; // step size for movement
In questo frammento,anglerappresenta la posizione corrente del servo, mentreangleStepDefinisce di quanto si muove il servo ad ogni pressione del pulsante. Questo codice è essenziale per tenere traccia della posizione del servo.
Successivamente abbiamo la funzione setup in cui colleghiamo il servo e configuriamo i pin di ingresso:
void setup() {
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9
pinMode(2, INPUT_PULLUP); // configure button pin
}
Nella funzione setup inizializziamo il monitor seriale e colleghiamo il servo al pin 9. Il pulsante sul pin 2 è impostato come ingresso con resistenza di pull-up, il che semplifica il cablaggio ed evita la necessità di resistenze esterne.
Infine, esaminiamo la funzione loop che gestisce la pressione del pulsante:
while(digitalRead(2) == LOW) {
angle = angle + angleStep; // increment angle
myservo.write(angle); // move servo
}
Questo ciclo controlla continuamente se il pulsante è premuto. Quando è premuto, l'angolo aumenta del passo definito e il servo si muove di conseguenza. È fondamentale assicurarsi che l'angolo rimanga entro i limiti (da 0 a 180 gradi) per evitare danni al servo.
Dimostrazione / Cosa aspettarsi
Quando premi il pulsante destro, il servo dovrebbe muoversi verso destra con incrementi di 10 gradi fino a raggiungere il massimo di 180 gradi. Allo stesso modo, premendo il pulsante sinistro il servo si muoverà verso sinistra. Se tieni premuto un pulsante, il servo continuerà a muoversi in quella direzione finché non rilasci il pulsante (nel video a 01:00).
Errori comuni includono problemi di cablaggio, come connessioni errate o ingressi flottanti. Assicurati sempre che i collegamenti siano sicuri e che tu stia usando i pin corretti come specificato nel codice.
Questo tutorial è parte di: Servomotori
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Controllare un servomotore con un potenziometro usando Arduino
- Controllare un servomotore con un potenziometro e un LCD1602 usando Arduino
- Controllare i servomotori utilizzando un telecomando a infrarossi con Arduino
- Controllo del Motore Servo Arduino Utilizzando un Potenziometro
- Controllare la posizione del servo con gesti della mano per Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Codice Arduino e video per il controller per servomotori PCA9685 a 16 canali e 12 bit V1
- Build an Arduino Servo Toggle Switch with a Push Button
Cose di cui potresti avere bisogno
-
AmazonServo motore su Amazonamzn.to
-
AliExpressAcquista il servomotore SG90 da 180 o 360 da AliExpresss.click.aliexpress.com
Risorse e riferimenti
Nessuna risorsa ancora.
File📁
Nessun file disponibile.