Arduino Nano - Clavier - Moteur Servo

Ce tutoriel vous explique comment utiliser un Arduino Nano et un clavier pour contrôler un moteur servo. En détail :

Le code Arduino Nano peut accepter plusieurs mots de passe.

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Keypad
1×Servo Motor
1×5V Power Adapter
1×Jumper Wires
1×(Optional) DC Power Jack
1×(Optional) 9V Power Adapter for Arduino Nano
1×(Recommended) Screw Terminal Adapter for Arduino Nano

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du clavier et du servomoteur

Si vous n'êtes pas familiarisé avec le clavier et le moteur servo (y compris le brochage, le fonctionnement et la programmation), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage du servomoteur à clavier Arduino Nano

This image is created using Fritzing. Click to enlarge image

Il convient de noter que le schéma de câblage illustré ci-dessus est uniquement adapté à un servomoteur à faible couple. Si le moteur vibre au lieu de tourner, une source d'alimentation externe doit être utilisée pour faire fonctionner le servomoteur. Le schéma de câblage suivant montre comment connecter le servomoteur à une source d'alimentation externe.

Schéma de câblage du servomoteur à clavier Arduino Nano

This image is created using Fritzing. Click to enlarge image

Veuillez ne pas oublier de connecter le GND de l'alimentation externe au GND de l'Arduino.

Code Arduino Nano - fait tourner le moteur servo si le mot de passe est correct

Si le mot de passe est correct, le servomoteur sera réglé à 90° pendant 5 secondes. Après cette période, il sera tourné à 0°.

/* * Ce code Arduino Nano a été développé par newbiely.fr * Ce code Arduino Nano est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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°"); } }

Étapes rapides

  • Connectez un câble USB entre l'Arduino Nano et le PC.
  • Ouvrez l'Arduino IDE, sélectionnez la carte et le port appropriés.
  • Cliquez sur l'icône Libraries dans la barre gauche de l'Arduino IDE.
  • Recherchez "keypad" et localisez la bibliothèque de clavier créée par Mark Stanley et Alexander Brevig.
  • Ensuite, appuyez sur le bouton Install pour terminer l'installation de la bibliothèque de clavier.
Bibliothèque de pavé numérique Arduino Nano
  • Copiez le code et ouvrez-le avec l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour envoyer le code à l'Arduino Nano.
Téléversement de code avec l'IDE Arduino
  • Entrez 12345# sur le clavier, suivi de 09876#.
  • Consultez le moniteur série et observez l'état du moteur servo.
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  

Explication du code

Les mots de passe valides sont prédéfinis dans le code de l'Arduino Nano. Une chaîne, appelée input_password, sert à stocker le mot de passe saisi par les utilisateurs. Sur le clavier, deux touches (* et #) sont utilisées à des fins spéciales : effacer le mot de passe et terminer le mot de passe. Lorsqu'une touche est pressée :

  • Si la touche n'est pas l'une des deux touches spéciales, elle est ajoutée à input_password.
  • Si la touche est *, le input_password est effacé. Cela peut être utilisé pour démarrer ou redémarrer la saisie du mot de passe.
  • Si la touche est # :
    • L'Arduino Nano compare input_password avec les mots de passe pré-définis. S'il correspond à l'un d'eux, le moteur servo est tourné à 90°.
    • Que le mot de passe soit correct ou non, le input_password est effacé pour la prochaine saisie.
    • Après un délai d'attente, l'Arduino Nano tourne le moteur servo à 0°.

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!