Arduino - Knop - Servo Motor

We gaan leren:

Dit proces wordt herhaald.

De tutorial bestaat uit twee hoofdonderdelen:

Hardware Vereist

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Breadboard-bevestigde knop met kap
1×Breadboard-bevestigde knop set
1×Paneel-bevestigde drukknop
1×Drukknopmodule
1×Servomotor
1×Breadboard (experimenteerprint)
1×Jumperdraden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de Servo Motor en Knop

Als u niet bekend bent met servo motor en knop (pinout, werking, programmeren …), leer er meer over in de volgende tutorials:

Aansluitschema

Arduino Knop Servo Motor Aansluitschema

This image is created using Fritzing. Click to enlarge image

Arduino Code - Knop bestuurt Servo Motor zonder Debouncing

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-button-servo-motor */ #include <Servo.h> // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int SERVO_PIN = 9; // Arduino pin connected to servo motor's pin Servo servo; // create servo object to control a servo // variables will change: int angle = 0; // the current angle of servo motor int lastButtonState; // the previous state of button int currentButtonState; // the current state of button void setup() { Serial.begin(9600); // initialize serial pinMode(BUTTON_PIN, INPUT_PULLUP); // set arduino pin to input pull-up mode servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); currentButtonState = digitalRead(BUTTON_PIN); } void loop() { lastButtonState = currentButtonState; // save the last state currentButtonState = digitalRead(BUTTON_PIN); // read new state if(lastButtonState == HIGH && currentButtonState == LOW) { Serial.println("The button is pressed"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // control servo motor arccoding to the angle servo.write(angle); } }

Snel aan de slag

  • Verbind Arduino met PC via een USB-kabel
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort
  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Druk meerdere keren op de knop
  • Bekijk de beweging van de servo motor

※ Notiz:

In de praktijk werkt bovenstaande code soms niet correct. Om ervoor te zorgen dat het altijd goed werkt, moeten we debouncing toepassen voor de knop. Debouncing voor de knop is niet eenvoudig voor beginners. Gelukkig kunnen we dit met dank aan de ezButton bibliotheek heel makkelijk doen.

Arduino Code - Knop bestuurt Servo Motor met Debouncing

Waarom is debouncing nodig? ⇒ zie Arduino - Knop Debounce tutorial

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-button-servo-motor */ #include <Servo.h> #include <ezButton.h> // constants won't change const int BUTTON_PIN = 7; // Arduino pin connected to button's pin const int SERVO_PIN = 9; // Arduino pin connected to servo motor's pin ezButton button(BUTTON_PIN); // create ezButton object that attach to pin 7; Servo servo; // create servo object to control a servo // variables will change: int angle = 0; // the current angle of servo motor void setup() { Serial.begin(9600); // initialize serial button.setDebounceTime(50); // set debounce time to 50 milliseconds servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); } void loop() { button.loop(); // MUST call the loop() function first if(button.isPressed()) { Serial.println("The button is pressed"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // control servo motor arccoding to the angle servo.write(angle); } }

Snel aan de slag

  • Installeer de ezButton bibliotheek. Zie Hoe te doen
  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Klik op de Upload knop in de Arduino IDE om de code naar Arduino te uploaden
  • Druk meerdere keren op de knop
  • Bekijk de beweging van de servo motor

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap te volgen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!