Nota
Ciao, benvenuto nella Comunità degli Appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci la tua conoscenza di Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.
Why Join?
Expert Support: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Learn & Share: Scambia consigli e tutorial per migliorare le tue competenze.
Exclusive Previews: Ottieni accesso anticipato alle nuove annunci di prodotti e anteprime esclusive.
Special Discounts: Goditi sconti esclusivi sui nostri prodotti più recenti.
Festive Promotions and Giveaways: Partecipa a giveaway e promozioni festive.
👉 Pronto per esplorare e creare con noi? Clicca [qui] e unisciti oggi!
Lezione 33: Motore Servo (SG90)
In questa lezione, imparerai a controllare un motore servo con una scheda di sviluppo ESP32. Tratteremo il processo per fare oscillare il motore servo da 0 a 180 gradi e viceversa, offrendoti esperienza pratica nella gestione dei movimenti dei servi. Questo progetto è ideale per chi desidera comprendere il controllo dei motori e l’uso della modulazione di larghezza di impulso (PWM) nella robotica, utilizzando la versatile scheda ESP32.
Componenti Necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
ELEMENTI IN QUESTO KIT |
LINK |
---|---|---|
Kit Sensori per Maker Universali |
94 |
Puoi anche acquistarli separatamente dai link qui sotto.
Introduzione al Componente |
Link per l’Acquisto |
---|---|
ESP32 & Scheda di Sviluppo (ESP32 WROOM 32E) |
|
Cablaggio

Codice
Analisi del Codice
Inclusione della Libreria
La libreria ESP32Servo è inclusa per gestire le operazioni del motore servo.
#include <ESP32Servo.h>
Definizione del Servo e del Pin
Viene creato un oggetto Servo, e viene definito un pin per il controllo del servo.
Servo myServo; const int servoPin = 25;
Definizione dei Limiti di Larghezza degli Impulsi
Vengono definiti la larghezza minima e massima degli impulsi per i limiti di movimento del servo.
const int minPulseWidth = 500; // 0.5 ms const int maxPulseWidth = 2500; // 2.5 ms
Funzione Setup
Il servo è collegato al pin definito e viene impostato il suo intervallo di larghezza di impulsi.
La frequenza PWM è impostata a 50Hz, standard per i servomotori.
void setup() { myServo.attach(servoPin, minPulseWidth, maxPulseWidth); myServo.setPeriodHertz(50); }
Funzione Loop
La rotazione del servo è controllata in un ciclo, muovendosi da 0 a 180 gradi, poi ritorna a 0 gradi.
writeMicroseconds()
è utilizzata per impostare la posizione del servo basata sulla larghezza dell’impulso.
void loop() { // Ruota il servo da 0 a 180 gradi for (int angle = 0; angle <= 180; angle++) { int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth); myServo.writeMicroseconds(pulseWidth); delay(15); } // Ruota il servo da 180 a 0 gradi for (int angle = 180; angle >= 0; angle--) { int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth); myServo.writeMicroseconds(pulseWidth); delay(15); } }