Search Code

Eenvoudig Arduino-project: Bestuur een servo met een drukknop 180 graden naar 0 en terug

Eenvoudig Arduino-project: Bestuur een servo met een drukknop 180 graden naar 0 en terug

Inleiding

Dit artikel legt een eenvoudig Arduino-project uit dat een drukknop gebruikt om een servomotor aan te sturen. Een servomotor is een nauwkeurige motor die naar een specifieke positie kan draaien, waardoor deze ideaal is voor toepassingen zoals robotica en automatisering. Dit project zorgt ervoor dat een servo van 0 naar 180 graden beweegt wanneer een knop wordt ingedrukt en terugkeert naar 0 wanneer deze wordt losgelaten.

Projectcomponenten en bedrading

Je hebt een Arduino-bord, een servomotor en een drukknop nodig.

Bedradingsinstructies:

  • Servomotor: Verbind de signaaldraad (meestal geel/oranje) met pin 3 van de Arduino, de stroomdraad (rood) met 5V, en de aarddraad (zwart/bruin) met GND.
  • Drukknop: Verbind één poot met digitale pin 2 en de andere poot met een GND-pin. Dat is alles! Door de interne pull-upweerstand van de Arduino te gebruiken, heb je geen externe weerstand nodig.

 

De code uitgelegd

Het programma is opgedeeld in drie hoofdonderdelen: de pindefinities, de setup()-functie en de loop()-functie.

Pindefinities

Deze sectie stelt de vereiste bibliotheken in en kent betekenisvolle namen toe aan de pinnen die je gebruikt.

#include <Servo.h>

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

Servo myServo;

De setup()-functie

De setup()-functie bevat code die slechts één keer wordt uitgevoerd wanneer het Arduino-bord wordt ingeschakeld of gereset. Deze wordt gebruikt voor de initiële configuratie.

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

De cruciale wijziging is pinMode(buttonPin, INPUT_PULLUP);. Dit activeert een interne weerstand die de spanning van de pin naar HOOG trekt. Wanneer je de knop indrukt, verbindt deze de pin met aarde en daalt de spanning naar LAAG.

De loop()-functie

De loop()-functie bevat de hoofdprogrammalogica en wordt herhaaldelijk voor altijd uitgevoerd nadat de setup()-functie is voltooid.

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

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

De logica hier is nu omgekeerd. Omdat het indrukken van de knop resulteert in een LOW-signaal, wordt de voorwaarde if (buttonState == LOW) gebruikt om de servo naar 180 graden te bewegen.

Afbeeldingen

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

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Geen bestanden beschikbaar.