Controllare un servomotore con pulsanti usando Arduino

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

ProduttoreDiversi
Numero di parteSG90
Tensione logica/I/O5 V
Tensione di alimentazione4.8-6 V
Corrente di uscita (per canale)Massimo 1,5 A
Corrente di picco (per canale)2,5 A max
Indicazioni sulla frequenza PWM50 Hz
Soglie logiche di ingresso0.3VCCfino a 0,7 Vcopia conoscenza
Caduta di tensione / RDS(on) / saturazione0,4 V
Limiti termici85 °C
PacchettoPlastica
Note / variantiRotazione 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

Arduino wriing for Sevo motor with 2 push buttons
Arduino wriing for Sevo motor with 2 push buttons

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.

Immagini

Controlla il servo con un pulsante a pressione singolo utilizzando Arduino
Controlla il servo con un pulsante a pressione singolo utilizzando Arduino
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
Arduino wriing for Sevo motor with 2 push buttons
Arduino wriing for Sevo motor with 2 push buttons
98-Control a servo with a single push button using Arduino
Lingua: C++
99-Control a servo with two push buttons using Arduino
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

Nessuna risorsa ancora.

File📁

Nessun file disponibile.