Arduino Nano - Keypad - Servo Motor

Deze tutorial legt uit hoe u een Arduino Nano en een keypad gebruikt om een servo motor aan te sturen. In detail:

De code voor de Arduino Nano kan meerdere wachtwoorden accepteren.

Hardware Required

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB kabel
1×Toetsenbord
1×Servomotor
1×5V Voedingsadapter
1×Jumper Draden
1×(Optioneel) DC Voedingsconnector
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

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 Keypad en Servo Motor

Als u niet bekend bent met een keypad en een servo motor (inclusief pinout, werking en programmering), kunnen de volgende tutorials u helpen:

Bedradingsschema

Arduino Nano keypad servo motor bedradingsschema

This image is created using Fritzing. Click to enlarge image

Het is belangrijk om te weten dat het bovenstaande bedradingsschema alleen geschikt is voor een servo motor met een laag koppel (torque). Als de motor trilt in plaats van draait, moet u een externe voeding gebruiken om de servo motor van stroom te voorzien. Het volgende bedradingsschema laat zien hoe u de servo motor aansluit op een externe voeding.

Arduino Nano keypad servo motor bedradingsschema

This image is created using Fritzing. Click to enlarge image

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

Arduino Nano Code - draait Servo Motor als het wachtwoord correct is

Als het wachtwoord correct is, wordt de servo motor ingesteld op 90° voor 5 seconden. Na deze tijd wordt de motor weer teruggedraaid naar 0°.

/* * 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-keypad-servo-motor */ #include <Keypad.h> #include <Servo.h> #define SERVO_PIN 10 // // The Arduino Nano pin connected to the servo motor Servo servo; // servo motor const int ROW_NUM = 4; // four rows const int COLUMN_NUM = 4; // four columns const byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // The Arduino Nano pin connected to the row pins of the keypad const byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // The Arduino Nano pin connected to the column pins of the keypad char key_layout[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; Keypad keypad = Keypad(makeKeymap(key_layout), pin_rows, pin_column, ROW_NUM, COLUMN_NUM); const String password_1 = "4321"; // change your password here const String password_2 = "09876"; // change your password here const String password_3 = "9765"; // change your password here String input_password; int angle = 0; // The current angle of servo motor unsigned long prev_time; void setup() { Serial.begin(9600); input_password.reserve(32); // maximum password size is 32, change if needed servo.attach(SERVO_PIN); servo.write(0); // rotate servo motor to 0° prev_time = millis(); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // reset the input password } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("The correct password! Rotating Servo Motor to 90°"); angle = 90; servo.write(angle); prev_time = millis(); } else { Serial.println("The incorrect password! try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } if (angle == 90 && (millis() - prev_time) > 5000) { // 5 seconds angle = 0; servo.write(angle); Serial.println("Rotating Servo Motor to 0°"); } }

Snelle Stappen

  • Verbind een USB-kabel tussen de Arduino Nano en de pc.
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort.
  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar “keypad” en vind de keypad library gemaakt door Mark Stanley en Alexander Brevig.
  • Druk vervolgens op de Installeren-knop om de keypad library te installeren.
Arduino Nano keypad library
  • Kopieer de code en open deze in de Arduino IDE.
  • Klik op de Upload-knop in de Arduino IDE om de code naar de Arduino Nano te verzenden.
Arduino IDE Upload Code
  • Voer 12345# in op het keypad, gevolgd door 09876#.
  • Controleer de Seriële Monitor en observeer de status van de servo motor.
COM6
Send
The incorrect password! try again The correct password! Rotating Servo Motor to 90° Rotating Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Uitleg Code

De geldige wachtwoorden zijn vooraf gedefinieerd in de code van de Arduino Nano. Een string, genaamd input_password, wordt gebruikt om het door gebruikers ingevoerde wachtwoord op te slaan. Op het keypad worden twee toetsen (* en #) voor speciale doeleinden gebruikt: het wissen van het wachtwoord en het beëindigen van de invoer. Wanneer een toets wordt ingedrukt:

  • Als de toets niet een van de twee speciale toetsen is, wordt deze toegevoegd aan input_password.
  • Als de toets * is, wordt input_password gewist. Dit kan worden gebruikt om de invoer te starten of opnieuw te beginnen.
  • Als de toets # is:
    • Vergelijkt de Arduino Nano input_password met de vooraf gedefinieerde wachtwoorden. Als er een match is, wordt de servo motor naar 90° gedraaid.
    • Ongeacht of het wachtwoord correct is, wordt input_password gewist voor de volgende invoer.
    • Na een time-out draait de Arduino Nano de servo motor terug naar 0°.

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.

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