Arduino Nano - Bouton - Moteur Servo

Dans ce tutoriel, vous apprendrez à contrôler un moteur servo avec un Arduino Nano et un bouton. Lorsque le bouton est pressé, le moteur servo tournera de 90 degrés. Si le bouton est pressé à nouveau, le moteur servo retournera à 0 degré. Cette action se répétera continuellement.

Ce tutoriel comporte deux sections :

Préparation du matériel

1×Arduino Nano
1×USB A to Mini-B USB cable
1×Push Button
1×(Optional) Panel-mount Push Button
1×Servo Motor
1×Breadboard
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 servomoteur et du bouton

Si vous n'êtes pas familier avec les moteurs servo et les boutons (y compris les brochages, leur fonctionnement et comment les programmer), les tutoriels suivants peuvent vous aider :

Diagramme de câblage

Schéma de câblage du moteur servo à bouton Arduino Nano

This image is created using Fritzing. Click to enlarge image

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

Schéma de câblage du bouton du moteur servo Arduino Nano

This image is created using Fritzing. Click to enlarge image

Veuillez ne pas oublier de connecter la masse de l'alimentation externe à la masse de l'Arduino.

Code Arduino Nano - Contrôle d'un moteur servo avec un bouton sans anti-rebond

/* * 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-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); } }

Étapes rapides

  • Branchez un câble USB sur votre Arduino Nano et votre PC.
  • Lancez l'IDE Arduino, sélectionnez la carte et le port corrects.
  • Collez le code dans l'IDE et ouvrez-le.
  • Cliquez sur le bouton Upload dans l'IDE pour envoyer le code à l'Arduino Nano.
  • Appuyez plusieurs fois sur le bouton.
  • Observez le mouvement du moteur servo.

※ NOTE THAT:

En pratique, le code mentionné ci-dessus ne fonctionne pas toujours correctement. Pour garantir son bon fonctionnement, nous devons debouncer le bouton. Le debouncing du bouton peut être difficile pour ceux qui sont nouveaux dans ce domaine. Heureusement, avec l'aide de la bibliothèque ezButton, cette tâche peut être grandement simplifiée.

Code Arduino Nano - Contrôle d'un moteur servo avec anti-rebond

Pourquoi est-il nécessaire de supprimer les rebonds? Consultez le tutoriel Arduino Nano - Suppression des rebonds des boutons pour plus d'informations.

/* * 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-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); } }

Étapes rapides

  • Installez la bibliothèque ezButton. Reportez-vous à Comment faire pour les instructions.
  • Ouvrez le code dans l'IDE Arduino.
  • Cliquez sur le bouton Upload dans l'IDE Arduino pour charger le code sur l'Arduino Nano.
  • Appuyez plusieurs fois sur le bouton.
  • Observez les changements dans le moteur servo.

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!