Publié 2026-03-25
Avez-vous déjà rencontré cette situation - leservomoteurque vous avez acheté ne peut tourner que dans une seule direction, ou ne peut s'arrêter qu'à quelques angles fixes, complètement incapable d'obtenir l'effet de balancement fluide d'avant en arrière ? Ne vous inquiétez pas, ce n'est en fait pas un problème avec leservomoteurlui-même, mais le programme que nous avons écrit n'est pas assez "intelligent". Aujourd'hui, nous allons parler de la façon d'utiliser quelques lignes de code simples pour créer leservomoteurtournez vraiment librement d'avant en arrière, rendant votre petite invention instantanément agile.
La raison pour laquelle l'appareil à gouverner peut s'arrêter avec précision à un certain angle dépend du moteur interne et d'un système de retour d'angle. Pour faire simple, il détermine la position vers laquelle il souhaite se déplacer en recevant un signal PWM (c'est-à-dire un signal de modulation de largeur d'impulsion). Habituellement, la période du signal est de 20 millisecondes et le temps de niveau haut est compris entre 0,5 et 2,5 millisecondes, correspondant à la plage d'angle de 0 à 180 degrés. Comprenez cette logique, lorsque nous écrivons un programme, nous maîtrisons le « volant ». Si nous voulons que le servo tourne, il suffit de lui envoyer la valeur du signal correspondante.
Lorsque vous utilisez ce type de carte de développement pour contrôler, vous n'avez pas besoin de calculer vous-même ces temps d'impulsion compliqués, il suffit d'appeler les fonctions de bibliothèque prêtes à l'emploi. Par exemple, dans leécrire()fonctionner dansServo.hbibliothèque, il vous suffit d'écrire.écrire(90), et le servo se tournera vers la position 90 degrés. Donc, si vous souhaitez qu'il tourne librement d'avant en arrière, l'essentiel est de faire changer cette valeur d'angle à plusieurs reprises dans la plage spécifiée.
Si vous débutez en programmation, vous pouvez commencer par le « mouvement de va-et-vient » le plus élémentaire. Nous utilisons d'abord une variable pour stocker l'angle actuel, puis nous la laissons commencer à partir de 0 degré, augmenter de 1 degré à chaque fois, jusqu'à ce qu'elle augmente à 180 degrés, puis la diminuer de 1 degré à chaque fois, revenir à 0 degré, complétant ainsi un cycle complet de va-et-vient. Faites attention à ajouter ici un délai approprié, sinon le servo tournera trop vite et aura l'air de convulser.
En fonctionnement réel, la structure du code est en réalité très simple. Vous définissez d'abord les broches du servo dansinstallation()fonction, puis écrivez deuxpourboucles dansboucle()fonction. Une boucle incrémente l'angle et l'autre boucle le décrémente. Chaque boucle appelle.écrire(angle)en interne, puis coopère avecretard(15)pour contrôler la vitesse de rotation. L'effet écrit ainsi est que le servo tourne d'avant en arrière en douceur comme un pendule.
De nombreux amis ont tendance à négliger un détail lors de l'écriture de programmes : le contrôle de la vitesse. Si vous souhaitez que le servo tourne plus lentement, vous pouvez ajouter un délai plus long, commeretard(30), après chaque changement d'angle, mais cela donnera l'impression que le mouvement global est lent. Une meilleure méthode consiste à réduire l'incrément d'angle à chaque fois, par exemple en le faisant passer de 1 degré à 0,5 degré à chaque fois. De cette façon, la trajectoire de mouvement du servo sera plus délicate et il sera plus beau mécaniquement.
La plage d’angle dépend également entièrement de vous. Il ne doit pas nécessairement passer de 0 à 180, vous pouvez simplement le faire pivoter d'avant en arrière entre 90 et 120 degrés. Ceci est particulièrement utile dans certains scénarios d’application de bras robotiques ou de petits ornements. Modifiez simplement la valeur de début et la valeur de fin danspourboucle, commefor(angle=45; angle , de sorte que le servo effectue un mouvement alternatif entre 45 et 135 degrés.
Ce n'est pas assez cool pour laisser le servo tourner tout seul. Ce serait plus intéressant si vous pouviez ajouter un contrôle externe. Vous pouvez connecter un bouton et appuyer sur le servo pour commencer à tourner d'avant en arrière, et appuyer à nouveau pour arrêter à l'angle actuel. Ou utilisez des capteurs à ultrasons pour détecter les objets devant vous et déclencher automatiquement une action de balancement lorsqu'un objet s'approche. De cette façon, vous pouvez créer un appareil interactif qui « dit bonjour ».
Pour implémenter cette fonction, il vous suffit d'ajouter quelques conditions de jugement au programme. Lisez d'abord les données du capteur et décidez s'il faut exécuter le cycle aller-retour du servo en fonction de la valeur des données. Voici une petite astuce. Afin d'éviter que le programme ne reste coincé dans la boucle, vous pouvez encapsuler la rotation du servo dans une fonction, puis utilisersicondition dans la boucle principale pour déterminer s’il faut appeler cette fonction. De cette façon, le programme principal peut gérer simultanément la lecture du capteur et la commande d'asservissement sans interférer les uns avec les autres.
Lors du débogage réel, vous pouvez rencontrer des situations dans lesquelles le servo tremble ou reste bloqué sous un certain angle. Cela est généralement dû à une alimentation électrique insuffisante. Le courant instantané du servo est relativement important lors du démarrage et de l'inversion de sens. Si l'alimentation est uniquement alimentée par la broche 5 V de la carte de développement, une instabilité de tension se produira facilement. La solution est également très simple. Trouvez une alimentation externe, telle que quatre piles 1,5 V ou un adaptateur secteur 5 V 2 A. Connectez respectivement les pôles positif et négatif aux fils rouge et marron du servo. En même temps, connectez le GND de la carte de développement et le GND de l'alimentation ensemble pour vous assurer que la tension de référence du signal est cohérente.
Une autre situation est qu'il n'y a pas suffisamment de retard ajouté au programme. Si vous modifiez la valeur de l'angle immédiatement aprèsécrire(), et le servo reçoit une nouvelle commande avant d'atteindre la position spécifiée, une étrange sensation de contraction se produira. Laissez au moins 15 à 20 millisecondes d'attente entre chaque changement d'angle pour permettre au servo d'avoir suffisamment de temps pour terminer l'action. C'est pourquoi nous avons mentionné précédemment qu'il fallait ajouterretardà la boucle.
Une fois que vous maîtrisez les bases du mouvement d'avant en arrière, vous pouvez essayer des combinaisons plus intéressantes. Par exemple, laissez le servo coopérer avec des lumières LED pour allumer des lumières de différentes couleurs lorsque vous tournez à un certain angle ; ou utilisez deux servos pour former un simple bras mécanique afin d'obtenir des balançoires synchrones ou alternées. Ces idées peuvent être utilisées dans des gadgets pour la maison intelligente, des modifications de jouets pour enfants ou des installations artistiques pour améliorer instantanément le plaisir et l'interactivité du produit.
De plus, vous pouvez également enregistrer les modes de rotation et les timings pour créer une « bibliothèque d'actions » et utiliser la télécommande Bluetooth ou infrarouge de votre téléphone portable pour appeler différents modes de swing. De cette façon, votre travail n'est plus un mouvement mécanique répétitif, mais a une « expression » variable qui peut montrer différentes postures d'action selon la scène, offrant aux utilisateurs une expérience plus riche.
Quels petits projets intéressants réalisez-vous en utilisant des servos ? Avez-vous déjà rencontré ce genre de problème de programmation qui rend les gens fous ? Bienvenue à partager votre histoire dans la zone de commentaires, ou recherchez directement « Shenzhen Hengxing Micro Motor » pour nous trouver afin d'obtenir des solutions de contrôle de l'appareil à gouverner et des références de code source plus pratiques, afin que l'idée suivante puisse être mise en œuvre plus facilement.
Heure de mise à jour:2026-03-25
Contactez le spécialiste des produits Kpower pour recommander un moteur ou une boîte de vitesses adapté à votre produit.