Arduino Nano - Knop - Servo Motor

In deze tutorial leert u hoe u een servo motor bestuurt met een Arduino Nano en een knop. Wanneer de knop wordt ingedrukt, draait de servo motor 90 graden. Als de knop opnieuw wordt ingedrukt, keert de servo motor terug naar 0 graden. Deze handeling wordt continu herhaald.

Deze tutorial bestaat uit twee delen:

Over Servo Motor en Knop

Als u niet bekend bent met servo motoren en knoppen (inclusief pinouts, werking en programmeren), kunnen de volgende tutorials u helpen:

Bedradingsschema

Arduino Nano Knop Servo Motor bedradingsschema

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Nano en andere componenten van stroom te voorzien.

Let op dat het bovenstaande bedradingsschema alleen geschikt is voor een servo motor met een laag koppel. Als de motor trilt in plaats van draait, moet er een externe voeding worden gebruikt om de servo motor van stroom te voorzien. Het volgende bedradingsschema laat zien hoe u de servo motor op een externe voeding aansluit.

Arduino Nano Servo Motor Knop bedradingsschema

This image is created using Fritzing. Click to enlarge image

Vergeet niet om de GND van de externe voeding te verbinden met de GND van de Arduino.

Arduino Nano Code - Knop bestuurt Servo Motor zonder Debouncing

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-button-servo-motor */ #include <Servo.h> const int BUTTON_PIN = 2; // The Arduino Nano pin connected to button's pin const int SERVO_PIN = 9; // The Arduino Nano pin connected to servo motor's pin Servo servo; // create servo object to control a servo int angle = 0; // The current angle of servo motor int prev_button_state; // The previous state of button int button_state; // The current state of button void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. 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); button_state = digitalRead(BUTTON_PIN); } void loop() { prev_button_state = button_state; // save the last state button_state = digitalRead(BUTTON_PIN); // read new state if(prev_button_state == HIGH && button_state == LOW) { Serial.println("The button is pressed"); // change angle of servo motor if(angle == 0) angle = 90; else if(angle == 90) angle = 0; // rotate the servo motor to the angle position servo.write(angle); } }

Snelle Stappen

  • Sluit een USB-kabel aan op uw Arduino Nano en pc.
  • Start de Arduino IDE, selecteer het juiste board en poort.
  • Plak de code in de IDE en open het bestand.
  • Klik op de Upload knop in de IDE om de code naar de Arduino Nano te sturen.
  • Druk meerdere keren op de knop.
  • Bekijk de beweging van de servo motor.

※ Notiz:

In de praktijk werkt de bovenstaande code niet altijd correct. Om te zorgen dat het goed functioneert, is het belangrijk om debouncing op de knop toe te passen. Debouncing kan lastig zijn voor beginners. Gelukkig maakt de ezButton bibliotheek dit een stuk eenvoudiger.

Arduino Nano Code - Knop bestuurt Servo Motor met Debouncing

Waarom is debouncing nodig? Zie de Arduino Nano - Knop Debounce tutorial voor meer informatie.

/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-button-servo-motor */ #include <Servo.h> #include <ezButton.h> const int BUTTON_PIN = 2; // The Arduino Nano pin connected to button's pin const int SERVO_PIN = 9; // The Arduino Nano pin connected to servo motor's pin ezButton button(BUTTON_PIN); // create ezButton object for pin 7; Servo servo; // create servo object to control a servo int angle = 0; // The current angle of servo motor void setup() { Serial.begin(9600); // Initialize the Serial to communicate with the Serial Monitor. 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; // rotate the servo motor to the angle position servo.write(angle); } }

Snelle Stappen

  • Installeer de ezButton bibliotheek. Raadpleeg How To voor de installatie-instructies.
  • Open de code in de Arduino IDE.
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino Nano te uploaden.
  • Druk meerdere keren op de knop.
  • Bekijk de veranderingen in 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 verder.

※ 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!