Search Code

Proiect Arduino ușor: Controlează un servo cu un buton de 180 de grade la 0 și înapoi

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.

Imagini

Arduino wiring for Servo motor with a push button
Arduino wiring for Servo motor with a push button
795-Ardunino code to control servo motor using a push button to move between 180 and zero degree
Limba: C++
#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

Resurse și referințe

Încă nu sunt resurse.

Fișiere📁

Nu sunt disponibile fișiere.