Progetto Arduino Facile: Controlla un Servo con un Pulsante da 180 gradi a 0 e ritorno
Introduzione
Questo articolo spiega un semplice progetto Arduino che utilizza un pulsante per controllare un servomotore. Un servomotore è un motore di precisione che può ruotare in una posizione specifica, rendendolo ideale per applicazioni come robotica e automazione. Questo progetto farà muovere un servo da 0 a 180 gradi quando viene premuto un pulsante e tornerà a 0 quando viene rilasciato.
Componenti del Progetto e Cablaggio
Avrai bisogno di una scheda Arduino, un servomotore e un pulsante.
Istruzioni di Cablaggio:
- Servomotore: Collega il cavo del segnale (solitamente giallo/arancio) al pin 3 di Arduino, il cavo di alimentazione (rosso) a 5V e il cavo di terra (nero/marrone) a GND.
- Pulsante: Collega un terminale al pin digitale 2 e l'altro terminale a un pin GND. Tutto qui! Utilizzando la resistenza di pull-up interna di Arduino, non hai bisogno di una resistenza esterna.
Il Codice Spiegato
Il programma è suddiviso in tre parti principali: le definizioni dei pin, la funzione setup() e la funzione loop().
Definizioni dei Pin
Questa sezione configura le librerie richieste e assegna nomi significativi ai pin che stai utilizzando.
#include <Servo.h>
const int servoPin = 3;
const int buttonPin = 2;
Servo myServo;
La Funzione setup()
La funzione setup() contiene codice che viene eseguito solo una volta quando la scheda Arduino viene accesa o resettata. Viene utilizzata per la configurazione iniziale.
void setup() {
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
myServo.write(0);
}
Il cambiamento cruciale è pinMode(buttonPin, INPUT_PULLUP);. Questo attiva una resistenza interna che porta la tensione del pin a HIGH. Quando premi il pulsante, questo collega il pin a terra e la tensione scende a LOW.
La Funzione loop()
La funzione loop() contiene la logica principale del programma e viene eseguita ripetutamente per sempre dopo che la funzione setup() è terminata.
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
myServo.write(180);
} else {
myServo.write(0);
}
}
La logica qui è ora invertita. Poiché la pressione del pulsante produce un segnale LOW, la condizione if (buttonState == LOW) viene utilizzata per muovere il servo a 180 gradi.
#include <Servo.h>
/*
* This is sketch for controlling servo motor. when push button is pressed, the servo moves to 180 degreees and stays there. when the push button is released, the servo motor returns back to 0 degree.
*/
// Define the pin for the servo motor
const int servoPin = 3;
// Define the pin for the push button
const int buttonPin = 2;
// Create a Servo object
Servo myServo;
void setup() {
// Attach the Servo object to the servo pin
myServo.attach(servoPin);
// Set the button pin as an input
pinMode(buttonPin, INPUT);
// Start the servo at 0 degrees
myServo.write(0);
}
void loop() {
// Read the state of the push button
int buttonState = digitalRead(buttonPin);
// If the button is pressed (HIGH)
if (buttonState == HIGH) {
// Move the servo to 180 degrees
myServo.write(180);
} else {
// If the button is released (LOW), move the servo back to 0 degrees
myServo.write(0);
}
}
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.