Proiect Arduino ușor: Controlează un servo cu un buton de 180 de grade la 0 și înapoi
Introducere
Acest articol explică un proiect Arduino simplu care folosește un buton pentru a controla un servomotor. Un servomotor este un motor precis care se poate roti într-o poziție specifică, fiind ideal pentru aplicații precum robotica și automatizarea. Acest proiect va face un servomotor să se miște de la 0 la 180 de grade când este apăsat un buton și să revină la 0 când este eliberat.
Componentele proiectului și conexiunile
Veți avea nevoie de o placă Arduino, un servomotor și un buton.
Instrucțiuni de conectare:
- Servomotor: Conectați firul de semnal (de obicei galben/portocaliu) la pinul 3 al Arduino, firul de alimentare (roșu) la 5V și firul de masă (negru/maro) la GND.
- Buton: Conectați un picior la pinul digital 2 și celălalt picior la un pin GND. Asta este tot! Folosind rezistența internă de pull-up a Arduino, nu aveți nevoie de un rezistor extern.
Codul explicat
Programul este împărțit în trei părți principale: definițiile pinilor, funcția setup() și funcția loop().
Definițiile pinilor
Această secțiune configurează bibliotecile necesare și atribuie nume semnificative pinilor pe care îi folosiți.
#include <Servo.h>
const int servoPin = 3;
const int buttonPin = 2;
Servo myServo;
Funcția setup()
Funcția setup() conține cod care rulează doar o singură dată când placa Arduino este alimentată sau resetată. Este folosită pentru configurarea inițială.
void setup() {
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
myServo.write(0);
}
Modificarea crucială este pinMode(buttonPin, INPUT_PULLUP);. Aceasta activează un rezistor intern care trage tensiunea pinului la HIGH. Când apăsați butonul, acesta conectează pinul la masă, iar tensiunea scade la LOW.
Funcția loop()
Funcția loop() conține logica principală a programului și rulează repetat la nesfârșit după ce funcția setup() este terminată.
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
myServo.write(180);
} else {
myServo.write(0);
}
}
Logica aici este acum inversată. Deoarece apăsarea butonului rezultă într-un semnal LOW, condiția if (buttonState == LOW) este folosită pentru a muta servomotorul la 180 de grade.
#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);
}
}
Lucruri de care ai putea avea nevoie
-
AmazonServo motor on Amazonamzn.to
-
AliExpressPurchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Nu sunt disponibile fișiere.