Ce tutoriel fait partie de: servomoteurs
Vous trouverez ici une liste de toutes les vidéos relatives aux servomoteurs. D'autres liens vers ces vidéos sont disponibles plus bas.
Contrôler un servomoteur avec des boutons-poussoirs à l'aide d'un Arduino
Dans ce tutoriel, nous allons apprendre comment contrôler un servomoteur à l'aide de deux boutons-poussoirs, l'un pour déplacer le servomoteur vers la gauche et l'autre pour le déplacer vers la droite. Lorsque vous appuyez sur le bouton de droite, le servomoteur se déplacera de 10 degrés vers la droite, et lorsque vous appuyez sur le bouton de gauche, il se déplacera de 10 degrés vers la gauche. Si vous maintenez un bouton enfoncé, le servomoteur continuera à se déplacer dans cette direction jusqu'à ce que vous relâchiez le bouton.

Ce projet est un excellent moyen de comprendre comment interfacer des boutons avec un servomoteur en utilisant Arduino. Nous aborderons les composants matériels nécessaires, les instructions de câblage et le code requis pour que tout fonctionne. Pour une compréhension plus claire, vous pouvez vous référer à la vidéo accompagnant ce tutoriel (dans la vidéo à 01:00).
Le matériel expliqué
Pour ce projet, vous aurez besoin d'une carte Arduino, d'un servomoteur et de deux boutons-poussoirs. Le servomoteur est responsable du mouvement, tandis que les boutons-poussoirs servent d'entrées pour contrôler la direction de ce mouvement. L'Arduino traite ces entrées et envoie les signaux appropriés au servomoteur.
Le servomoteur fonctionne à partir de signaux de modulation de largeur d'impulsion (PWM). En envoyant des largeurs d'impulsion différentes, vous pouvez contrôler l'angle du servomoteur. Les boutons-poussoirs seront connectés aux broches d'entrée numériques de l'Arduino, et nous utiliserons des résistances pull-up internes pour simplifier le câblage.
Détails de la fiche technique
| Fabricant | Divers |
|---|---|
| Numéro de pièce | SG90 |
| Tension logique/E/S | 5 V |
| Tension d'alimentation | 4.8-6 V |
| Courant de sortie (par canal) | 1,5 A max |
| Courant de crête (par canal) | 2,5 A max. |
| Directives de fréquence PWM | 50 Hz |
| Seuils des niveaux logiques d'entrée | 0,3 VCopie carbonejusqu'à 0,7 VCC |
| Chute de tension / RDS(on)/ saturation | 0,4 V |
| Limites thermiques | 85 °C |
| Colis | Plastique |
| Notes / variantes | Rotation standard de 180° |
- Assurez-vous que le servomoteur est compatible avec votre tension d'alimentation.
- Utilisez un dissipateur thermique approprié si l'appareil fonctionne sous des courants élevés.
- Connectez les boutons à la masse en configuration pull-up.
- Appliquez un anti-rebond à vos boutons si vous rencontrez un comportement erratique.
- Surveillez la sortie série pour le débogage.
Instructions de câblage

Pour câbler les composants, commencez par connecter le servomoteur. Connectez le fil rouge du servo à la broche 5V de l'Arduino, le fil noir à la broche GND, et le fil de signal jaune ou blanc à la broche 9 de l'Arduino. Cette broche contrôlera la position du servo.
Ensuite, câblez les boutons-poussoirs. Connectez une borne du bouton droit à la broche 2 et l'autre borne à la masse. Pour le bouton gauche, connectez une borne à la broche 12 et l'autre également à la masse. Ce montage permet aux résistances pull-up internes de maintenir les broches à l'état haut lorsque les boutons ne sont pas enfoncés.
Exemples de code et guide pas à pas
Commençons par le code pour contrôler le servomoteur avec un seul bouton-poussoir. Le code initialise l'objet servo et définit un angle initial. Voici un court extrait :
int angle = 90; // initial angle for servo
int angleStep = 10; // step size for movement
Dans cet extrait,anglereprésente la position actuelle du servomoteur, tandis queangleStepDéfinit de combien le servomoteur se déplace à chaque appui sur le bouton. Ce code est essentiel pour suivre la position du servomoteur.
Ensuite, nous avons la fonction setup où nous attachons le servomoteur et configurons les broches d'entrée :
void setup() {
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9
pinMode(2, INPUT_PULLUP); // configure button pin
}
Dans la fonction setup, nous initialisons le moniteur série et attachons le servomoteur à la broche 9. Le bouton connecté à la broche 2 est configuré en entrée avec une résistance pull-up, ce qui simplifie le câblage et évite d'avoir recours à des résistances externes.
Enfin, nous examinons la fonction loop() qui gère l'appui sur le bouton :
while(digitalRead(2) == LOW) {
angle = angle + angleStep; // increment angle
myservo.write(angle); // move servo
}
Cette boucle vérifie en continu si le bouton est appuyé. Lorsqu'il l'est, l'angle augmente du pas défini et le servomoteur se déplace en conséquence. Il est crucial de s'assurer que l'angle reste dans les limites (0 à 180 degrés) pour éviter d'endommager le servomoteur.
Démonstration / À quoi s'attendre
Lorsque vous appuyez sur le bouton droit, le servo doit se déplacer vers la droite par paliers de 10 degrés jusqu'à atteindre le maximum de 180 degrés. De même, en appuyant sur le bouton gauche, le servo se déplacera vers la gauche. Si vous maintenez un bouton enfoncé, le servo continuera de se déplacer dans cette direction jusqu'à ce que vous relâchiez le bouton (dans la vidéo à 01:00).
Les écueils courants incluent des problèmes de câblage, tels que des connexions incorrectes ou des entrées flottantes. Assurez-vous toujours que vos connexions sont sécurisées et que vous utilisez les broches correctes telles que spécifiées dans le code.
Ce tutoriel fait partie de: servomoteurs
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- Contrôler un servomoteur avec un potentiomètre à l'aide d'un Arduino
- Contrôler un servomoteur avec un potentiomètre et un écran LCD1602 à l'aide d'un Arduino
- Contrôler des servomoteurs à l'aide d'une télécommande infrarouge avec Arduino
- Contrôle de moteur servo Arduino à l'aide d'un potentiomètre
- Contrôle de la position du servo avec des gestes de la main pour Arduino
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Code Arduino et vidéo pour le contrôleur de servomoteurs PCA9685 16 canaux 12 bits V1
- Build an Arduino Servo Toggle Switch with a Push Button
/*
Controlling a servo with a push button with Arduino
When a push button is pressed, the servo starts moving to the right or left until
it reaches 180 and then returns to 0 degrees.
May 22, 2018 at 01:00
Written by Ahmad S. for Robojax.com in Ajax, Ontario, Canada
Watch a video for this code at https://youtu.be/7woqNH_qby4
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle =90; // initial angle for servo
int angleStep =10;
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(2,INPUT_PULLUP);
Serial.println("Robojax Servo Button ");
}
void loop() {
while(digitalRead(2) == LOW){
// change the angle for the next time through the loop:
angle = angle + angleStep;
// reverse the direction of the movement at the ends of the angle:
if (angle <= 0 || angle >= 180) {
angleStep = -angleStep;
}
myservo.write(angle); // move the servo to the desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degrees");
delay(100); // waits for the servo to get there
}// while
}
/*
Controlling a servo with two push buttons with Arduino
When the left push button is pressed, the servo starts moving to the left until it reaches 180 (or zero) degrees.
When the right push button is pressed, the servo starts moving to the right until it reaches 180 (or zero) degrees.
At any instance, if the button is released, the servo stops.
May 22, 2018, at 01:00
Written by Ahmad S. for Robojax.com in Ajax, Ontario, Canada
Watch a video for this code at https://youtu.be/7woqNH_qby4
This code is taken from http://robojax.com/learn/arduino
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int angle =90; // initial angle for servo
int angleStep =5;
#define LEFT 12 // pin 12 is connected to left button
#define RIGHT 2 // pin 2 is connected to right button
void setup() {
// Servo button demo by Robojax.com
Serial.begin(9600); // setup serial
myservo.attach(9); // attaches the servo on pin 9 to the servo object
pinMode(LEFT,INPUT_PULLUP); // assign pin 12 as input for Left button
pinMode(RIGHT,INPUT_PULLUP);// assign pin 2 as input for right button
myservo.write(angle);// send servo to the middle at 90 degrees
Serial.println("Robojax Servo Button ");
}
void loop() {
// Servo button demo by Robojax.com
while(digitalRead(RIGHT) == LOW){
if (angle > 0 && angle <= 180) {
angle = angle - angleStep;
if(angle < 0){
angle = 0;
}else{
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
}
}
delay(100); // waits for the servo to get there
}// while
// Servo button demo by Robojax.com
while(digitalRead(LEFT) == LOW){
// Servo button demo by Robojax.com
if (angle >= 0 && angle <= 180) {
angle = angle + angleStep;
if(angle >180){
angle =180;
}else{
myservo.write(angle); // move the servo to desired angle
Serial.print("Moved to: ");
Serial.print(angle); // print the angle
Serial.println(" degree");
}
}
delay(100); // waits for the servo to get there
}//
}
Ce dont vous pourriez avoir besoin
-
AmazonMoteur servo sur Amazonamzn.to
-
AliExpressAchetez le moteur servo SG90 180 ou 360 sur AliExpress.s.click.aliexpress.com
Ressources et références
Aucune ressource pour le moment.
Fichiers📁
Aucun fichier disponible.