Hľadať kód

Jednoduchý Arduino projekt: Ovládanie serva tlačidlom o 180 stupňov na 0 a späť

Jednoduchý Arduino projekt: Ovládanie serva tlačidlom o 180 stupňov na 0 a späť

Úvod

Tento článok vysvetľuje jednoduchý projekt s Arduino, ktorý používa tlačidlo na ovládanie servomotora. Servomotor je presný motor, ktorý sa môže otočiť do konkrétnej polohy, čo ho robí ideálnym pre aplikácie ako robotika a automatizácia. Tento projekt spôsobí, že sa servo pohne z 0 na 180 stupňov, keď sa stlačí tlačidlo, a vráti sa na 0, keď sa uvoľní.

Komponenty projektu a zapojenie

Budete potrebovať dosku Arduino, servomotor a tlačidlo.

Pokyny na zapojenie:

  • Servomotor: Pripojte signálny vodič (zvyčajne žltý/oranžový) na pin 3 Arduina, napájací vodič (červený) na 5V a uzemňovací vodič (čierny/hnedý) na GND.
  • Tlačidlo: Pripojte jednu nožičku na digitálny pin 2 a druhú nožičku na pin GND. To je všetko! Použitím interného pull-up rezistora Arduina nepotrebujete externý rezistor.

 

Vysvetlenie kódu

Program je rozdelený na tri hlavné časti: definície pinov, funkcia setup() a funkcia loop().

Definície pinov

Táto časť nastaví potrebné knižnice a priradí zmysluplné názvy pinom, ktoré používate.

#include <Servo.h>

const int servoPin = 3;
const int buttonPin = 2;

Servo myServo;

Funkcia setup()

Funkcia setup() obsahuje kód, ktorý sa spustí iba raz, keď sa doska Arduino zapne alebo resetuje. Používa sa na počiatočnú konfiguráciu.

void setup() {
  myServo.attach(servoPin);
  pinMode(buttonPin, INPUT_PULLUP);
  myServo.write(0);
}

Kľúčová zmena je pinMode(buttonPin, INPUT_PULLUP);. Toto aktivuje interný rezistor, ktorý pritiahne napätie pinu na HIGH. Keď stlačíte tlačidlo, pripojí pin na zem a napätie klesne na LOW.

Funkcia loop()

Funkcia loop() obsahuje hlavnú logiku programu a spúšťa sa opakovane donekonečna po dokončení funkcie setup().

void loop() {
  int buttonState = digitalRead(buttonPin);

  if (buttonState == LOW) {
    myServo.write(180);
  } else {
    myServo.write(0);
  }
}

Logika je tu teraz obrátená. Keďže stlačenie tlačidla vedie k signálu LOW, podmienka if (buttonState == LOW) sa používa na pohyb serva na 180 stupňov.

Obrázky

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
Jazyk: 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);
  }
}

Veci, ktoré by ste mohli potrebovať

Zdroje a referencie

Zatiaľ žiadne zdroje.

Súbory📁

Žiadne súbory nie sú k dispozícii.