Maklike Arduino-projek: Beheer 'n servo met 'n drukknoppie 180 grade na 0 en terug
Inleiding
Hierdie artikel verduidelik 'n eenvoudige Arduino-projek wat 'n drukknoppie gebruik om 'n servomotor te beheer. 'n Servomotor is 'n presiese motor wat na 'n spesifieke posisie kan draai, wat dit ideaal maak vir toepassings soos robotika en outomatisering. Hierdie projek sal 'n servo van 0 tot 180 grade laat beweeg wanneer 'n knoppie gedruk word en terugkeer na 0 wanneer dit losgelaat word.
Projekkomponente en Bedrading
Jy sal 'n Arduino-bord, 'n servomotor en 'n drukknoppie nodig hê.
Bedradingsinstruksies:
- Servomotor: Verbind die seindraad (gewoonlik geel/oranje) aan Arduino pen 3, die kragdraad (rooi) aan 5V, en die gronddraad (swart/bruin) aan GND.
- Drukknoppie: Verbind een been aan digitale pen 2 en die ander been aan 'n GND-pen. Dis al! Deur die Arduino se interne optrekweerstand te gebruik, benodig jy geen eksterne weerstand nie.
Die Kode Verduidelik
Die program word in drie hoofdele verdeel: die pen-definisies, die setup()-funksie en die loop()-funksie.
Pen-Definisies
Hierdie afdeling stel die vereiste biblioteke op en ken betekenisvolle name toe aan die penne wat jy gebruik.
#include <Servo.h>
const int servoPin = 3;
const int buttonPin = 2;
Servo myServo;
Die setup()-Funksie
Die setup()-funksie bevat kode wat slegs een keer loop wanneer die Arduino-bord aangeskakel of herstel word. Dit word gebruik vir aanvanklike konfigurasie.
void setup() {
myServo.attach(servoPin);
pinMode(buttonPin, INPUT_PULLUP);
myServo.write(0);
}
Die deurslaggewende verandering is pinMode(buttonPin, INPUT_PULLUP);. Dit aktiveer 'n interne weerstand wat die pen se spanning na HOOG trek. Wanneer jy die knoppie druk, verbind dit die pen aan grond, en die spanning daal na LAAG.
Die loop()-Funksie
Die loop()-funksie bevat die hoofprogramlogika en loop herhaaldelik vir ewig nadat die setup()-funksie voltooi is.
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
myServo.write(180);
} else {
myServo.write(0);
}
}
Die logika hier is nou omgekeer. Aangesien die knoppiedruk 'n LOW-sein tot gevolg het, word die if (buttonState == LOW)-toestand gebruik om die servo na 180 grade te beweeg.
#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);
}
}
Goedere wat jy dalk nodig het
-
AmazonServo motor on Amazonamzn.to
-
AliExpressPurchase SG90 Servo motor 180 or 360 from AliExpresss.click.aliexpress.com
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Geen lêers beskikbaar.