Arduino - Keypad - Servo Motor

In deze handleiding leren we hoe u een keypad, servo motor en Arduino samen gebruikt:

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×Toetsenbord 3x4 en 4x4 Kit
1×(Alternatief) Keypad 3x4
1×(Alternatief) Keypad 4x4
1×Servomotor
1×5V Voedingsadapter
1×DC Voedingsconnector
1×Jumper draden
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 Keypad en Servo Motor

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

Aansluitschema

Arduino keypad servo motor wiring diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code - draait Servo Motor als het wachtwoord correct is

De onderstaande code draait de servo motor naar 90° gedurende 5 seconden als het wachtwoord klopt. Na 5 seconden draait de servo motor terug naar 0°.

/* * 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-keypad-servo-motor */ #include <Keypad.h> #include <Servo.h> #define ROW_NUM 4 // four rows #define COLUMN_NUM 4 // four columns #define SERVO_PIN A0 // // the Arduino pin, which connects to the servo motor Servo servo; // servo motor char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "ABC1234"; // change your password here const String password_2 = "5642B"; // 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 lastTime; 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° lastTime = 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 password is correct, rotating Servo Motor to 90°"); angle = 90; servo.write(angle); lastTime = millis(); } else { Serial.println("The password is incorrect, try again"); } input_password = ""; // reset the input password } else { input_password += key; // append new character to input password string } } if (angle == 90 && (millis() - lastTime) > 5000) { // 5 seconds angle = 0; servo.write(angle); Serial.println("Rotating Servo Motor to 0°"); } }

Snelle Stappen

  • Verbind de Arduino met de PC via een USB-kabel
  • Open de Arduino IDE, selecteer het juiste board en de juiste poort
  • Ga naar het icoon Libraries in de linkerzijbalk van de Arduino IDE
  • Zoek op “keypad”, zoek dan de keypad-library van Mark Stanley, Alexander Brevig
  • Klik op de knop Installeren om de keypad-library te installeren
Arduino keypad library
  • Kopieer de bovenstaande code en open deze in de Arduino IDE
  • Klik op de knop Uploaden in de Arduino IDE om de code naar de Arduino te uploaden
Arduino IDE Upload Code
  • Druk op 12345#
  • Druk op 5642B#
  • Bekijk het resultaat in de Serial Monitor en de status van de servo motor
COM6
Send
The password is incorrect, try again The password is correct, rotating Servo Motor to 90° Rotating Servo Motor to 0°
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Uitleg

Geautoriseerde wachtwoorden zijn vooraf gedefinieerd in de Arduino-code.

Een string wordt gebruikt om het door gebruikers ingevoerde wachtwoord op te slaan, genaamd input_password. Op het keypad worden twee toetsjes (* en #) gebruikt voor speciale functies: wachtwoord wissen en wachtwoord beëindigen. Wanneer een toets op het keypad wordt ingedrukt:

  • Als de ingedrukte toets niet een van de twee speciale toetsen is, wordt deze toegevoegd aan input_password
  • Als de ingedrukte toets * is, wordt input_password gewist. U kunt dit gebruiken om opnieuw te beginnen met het invoeren van het wachtwoord
  • Als de ingedrukte toets # is:
    • Wordt input_password vergeleken met de vooraf gedefinieerde wachtwoorden. Als deze overeenkomt met een van de wachtwoorden, draait de servo motor naar 90°.
    • Ongeacht of het wachtwoord correct is of niet, wordt input_password gewist voor de volgende invoer

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!