Publié 2026-04-29
Utilisez une carte de développement Arduino pour contrôler l'angle de rotation du servo à l'aide d'un bouton. C'est l'une des fonctions de base les plus pratiques dans la production électronique. Cet article donne directement une solution complète. Utilisez un bouton ordinaire. Lorsqu'il est enfoncé, le servo tourne à 90 degrés et lorsqu'il est relâché, il revient à 0 degré. Vous n'avez besoin que d'une carte de développement Arduino, d'un servo 9g, d'un bouton, de quelques fils Dupont et d'une maquette. Selon le schéma de câblage et le code ci-dessous, cela peut être complété en 30 minutes.
Liste du matériel requis :
Carte de développement Arduino (n'importe quel modèle est acceptable, cet article prend le modèle le plus courant comme exemple)
Servo SG90 9g (servo faible puissance, adapté à l'entrée de gamme)
Bouton tactile (6x6x5mm à quatre broches)
Résistance de 10 kΩ (pour résistance pull-down)
Planche à pain et du fil Dupont
Étapes de câblage (doit être précis) :
1. Connectez la ligne de signal du servo (généralement orange ou jaune) à la broche 9 de l'Arduino.
2. Connectez le câble d'alimentation du servo (rouge) à la broche 5V
3. Connectez le fil de terre du servo (marron ou noir) à la broche GND

4. Une broche du bouton est connectée au 5 V et l'autre broche est connectée à la broche 2.
5. Connectez une résistance pull-down de dix kΩ en parallèle entre la broche 2 et GND pour vous assurer que l'entrée est FAIBLE lorsqu'elle n'est pas enfoncée.
Une erreur courante est que l’omission de la résistance pull-down entraînera un saut irrégulier de l’état du bouton. Une extrémité de la résistance est connectée à la broche 2 et l'autre extrémité est connectée à GND.
#inclureservomoteurmonservomoteur; //Créer un objet servo int buttonPin = 2; // Broche de connexion du bouton int buttonState = 0; //État du bouton de stockage intservomoteurPos = 0 ; // Angle actuel du servo void setup() { myServo.attach(9); // Connectez la ligne de signal du servo à la broche 9 pinMode(buttonPin, INPUT); // Définit la broche du bouton comme entrée myServo.write(0); // Initialise l'angle du servo à 0 degré } void loop() { buttonState = digitalRead(buttonPin); // Lit l'état du bouton if (buttonState == HIGH) { // Lorsque vous appuyez dessus myServo.write(90); // Le servo tourne à 90 degrés avec retard (15); // Attendez que le servo atteigne la position } else { // Lorsque vous n'appuyez pas sur myServo.write(0); // Le servo revient à un délai de 0 degré (15); } }
La logique du code de base consiste à utiliser digitalRead() pour détecter en permanence le niveau de la broche 2.。Une fois le bouton enfoncé, c'est-à-dire lorsque la broche est à l'état HAUT, le servo effectue l'opération d'écriture (90).。Lorsque le bouton est relâché, le servo revient à l'opération d'écriture (0).. Grâce à une écriture structurée, nous divisons le programme en quatre modules clairement organisés : initialisation, lecture, jugement et exécution, afin que vous puissiez l'étendre vers un mode de contrôle multi-touches ou multi-angles dans les étapes suivantes.
Q : Le servo ne bouge pas du tout. Quelle pourrait en être la raison ?
Source d'alimentation insuffisante. Le servo doit être alimenté séparément. Le servo 9g peut utiliser directement le 5V d'Arduino, et le plus gros servo doit être alimenté par une alimentation externe.
Q : Appuyez une fois sur le bouton et le servo tournera une fois. Reviendra-t-il à zéro à sa sortie ?
R : Il y a une erreur logique dans le code. Assurez-vous d'utiliser la structure if-else fournie ci-dessus, au lieu de simplement déterminer les conditions après avoir appuyé sur.
Q : Que dois-je faire si l'appareil à gouverner tremble ou si la direction est incorrecte ?

1. Vérifiez si la ligne de signal est lâche. 2. Ajoutez un delay(15) après write(). 3. Cela fournira un temps d’action suffisant au servo.
Q : Comment le changer pour qu'il tourne à 90 degrés en appuyant une fois et qu'il revienne à zéro en appuyant à nouveau ?
Des variables doivent être ajoutées pour enregistrer le statut. Chaque fois qu'il est détecté que le bouton est enfoncé, le bit du drapeau est modifié et l'angle correspondant est écrit.
Q : Les boutons sont lents à répondre et parfois aucune réponse ?
En raison de la gigue mécanique des touches, vous pouvez ajouter un délai (10) après avoir détecté le changement de niveau pour éliminer la gigue, ou utiliser la bibliothèque Bounce2。
Après avoir maîtrisé le contrôle de base à un seul bouton, vous pouvez facilement mettre en œuvre les fonctions avancées suivantes :
1. Deux boutons contrôlent respectivement l'avant et l'arrière.
Bouton A : Appuyez pour passer à 180 degrés, relâchez pour revenir à 0 degré
Bouton B : Appuyez pour passer à 45 degrés, relâchez pour revenir à 0 degré
Modifier le code : ajoutez une deuxième épingle à bouton et jugez séparément
2. Un seul bouton pour parcourir trois angles
// L'angle est accumulé à chaque pression, 0→60→120→0 loop int angles[] = {0, 60, 120}; indice int = 0 ; if (buttonState == HIGH && !flag) { // Index anti-double-clic = (index+1) % 3; monServo.write(angles[index]); drapeau = vrai ; }
3. Appuyez longuement pour tourner en continu
Détectez la durée du bouton et continuez à augmenter l'angle après qu'il dépasse 500 ms jusqu'à ce qu'il soit relâché.
Voici des exemples de code complets avec des fonctions étendues. Les principes reposent tous sur la logique d’écriture structurée de cet article, c’est-à-dire une contribution claire. Cette entrée se compose d'états clés, suivis d'un traitement, qui est le calcul de l'angle, et enfin d'une sortie, qui est utilisée comme commande d'asservissement.
Accent mis sur le point central : l'essence du contrôle par bouton Arduino du servo est la transformation des "signaux numériques en signaux PWM". Les boutons donnent des niveaux hauts et bas, et le servo tourne à l'angle prédéfini en fonction de la valeur du niveau.Tant que le câblage est correct (la résistance pull-down ne doit pas être omise) et que la logique du code utilise if-else ou une machine à états, un contrôle stable peut être obtenu.。
Voici trois suggestions d’actions que vous pouvez mettre en œuvre immédiatement :
1. Ce soir, je vais construire une version de base : sur la base du schéma de câblage et du code de cet article, utilisez la planche à pain pour construire un circuit complet et soyez personnellement témoin de la scène de la rotation du servo lorsque vous appuyez sur le bouton.
2. Explorer l'expérience en modifiant la valeur de l'angle : changez l'état de 90 degrés en formes numériques aléatoires telles que 45 degrés, 135 degrés, 180 degrés, etc., faites attention aux changements de position de pilotage provoqués par l'observation, puis comprenez que la plage de paramètres de la fonction write() est de zéro à 180 degrés.
3. Ajoutez un deuxième bouton et comptez sur le code actuel pour copier le module de lecture des boutons afin d'obtenir un prototype de produit avec de réelles caractéristiques interactives pouvant être contrôlées par différents boutons sous différents angles.
Vous disposez déjà de toutes les connaissances clés pour réaliser des servos commandés par bouton à partir de zéro. Veuillez maintenant ouvrir l'IDE Arduino, connecter le matériel et vérifier vous-même chaque étape.
Heure de mise à jour:2026-04-29
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.