Comment contrôler votre servo avec l'Arduino

En utilisant un potentiomètre (ou tout capteur analogique), il est possible de contrôler directement votre servo avec l'Arduino de la même manière que vous souhaitez contrôler une griffe mécanique à arcades.

Sommaire

L'esquisse de Bouton

Cet exemple vous montre comment vous pouvez facilement utiliser un potentiomètre pour déplacer votre asservissement à un diplôme spécifique.

Tu as besoin:

  • Un Arduino Uno

  • Une maquette

  • Un servo

  • Une résistance variable 10k ohms

  • Fils de saut

Le servo est câblé exactement comme dans l'exemple de balayage, mais cette fois vous avez besoin de connexions supplémentaires à 5V et GND pour le potentiomètre, vous devez donc utiliser une planche à pain de fournir les broches supplémentaires. Connectez les broches 5 V et GND sur l'Arduino à la borne positive (+) et négatif (-) rangées sur la planche à pain.

Raccorder le servo à la planche à pain en utilisant soit une rangée de trois repères de la tête ou trois fils de saut. Branchez la prise rouge à la ligne 5V, la prise noir / marron à la ligne GND, et la prise blanche / jaune à la broche 9 sur l'Arduino.

image0.jpg


Trouver un espace sur la carte de test pour le potentiomètre. Connectez la broche centrale à la broche A0 sur le Arduino et les broches restantes à 5V sur un côté et GND de l'autre.

image1.jpg

Après avoir construit le circuit, ouvrir l'esquisse en choisissant File-exemples-Servo-Bouton. Le code de l'esquisse est comme suit:

// Commander une position d'asservissement à l'aide d'un potentiomètre (résistance variable) // par Michal Rinott #include lt;Servo.h>Servo myservo- // créer objet asservi pour contrôler un servoint potpin = 0- // broche analogique utilisée pour raccorder le potentiomètreint Val // variable pour lire la valeur de la configuration pinvoid analogique () {myservo.joindre(9) - // attache le servo sur la broche 9 à l'objet de servo} void loop de () {val = analogRead(potpin) - // lit la valeur du potentiomètre // (valeur entre 0 et 1023 //) val = carte(val, 0, 1023, 0, 179) - // échelle pour l'utiliser avec // le servo (valeur entre 0 et 180 //) myservo.écrire(Val) - // définit la position d'asservissement selon // à la valeur à l'échelleretard(15) - // attend pour le servo arriver}

Vous remarquerez peut-être qu'il ya quelques divergences entre les commentaires et le code. Lorsqu'on se réfère à la gamme de degrés pour déplacer le servo, l'esquisse mentionne à la fois de 0 à 179 et 0 à 180. Avec tous les tutoriels Arduino, il est préférable de supposer qu'ils sont des travaux en cours et ne sont pas toujours exactes.

La plage correcte est de 0 à 179, ce qui vous donne 180 valeurs. Le comptage de zéro est désigné par indexation zéro et est un phénomène fréquent dans Arduino, comme vous avez pu le constater par ce point.

Après avoir trouvé le croquis, appuyez sur le bouton de compilation pour vérifier le code. Le compilateur doit mettre en évidence les erreurs de syntaxe dans la boîte de message, qui allume en rouge quand ils sont découverts.

Si l'esquisse compile correctement, cliquez sur Télécharger pour télécharger l'esquisse à votre conseil. Lorsque cela est fait le téléchargement, votre servo devrait tourner que vous tournez votre potentiomètre.

Si tel est pas ce qui arrive, vous devriez vérifier votre câblage:

  • Assurez-vous que vous utilisez la broche 9 pour relier les données (blanc / jaune) en ligne à l'asservissement.

  • Vérifiez vos connexions au potentiomètre et assurez-vous que la broche centrale est reliée à la broche analogique 0.

  • Vérifiez les connexions sur la carte de test. Si les fils de saut ou des composants ne sont pas connectés en utilisant les lignes correctes dans la planche à pain, ils ne fonctionneront pas.

La ventilation Bouton de croquis

Dans les déclarations, la bibliothèque d'asservissement, Servo.h, et un nouvel objet d'asservissement sont nommés. La broche d'entrée analogique est déclaré avec une valeur de 0, montrant que vous utilisez analogique 0.

Vous avez peut-être remarqué que la broche est numéroté 0, A0 pas comme dans les autres exemples. Soit est bien, parce que A0 est juste un alias de 0, A1 est de 1, et ainsi de suite. Utilisation A0 est bon pour plus de clarté, mais facultatif.

Il existe une dernière variable pour stocker la valeur de la lecture, qui va devenir la sortie.

#comprendre lt;Servo.h>Servo myservo- // créer objet asservi pour contrôler un servoint potpin = 0- // broche analogique utilisée pour raccorder le potentiomètreint Val // variable pour lire la valeur de la broche analogique

Dans la configuration, le seul élément à définir est myservo, qui utilise 9 broches.

void setup () {myservo.joindre(9) - // attache le servo sur la broche 9 à l'objet de servo}

Plutôt que d'utiliser deux variables distinctes pour l'entrée et la sortie, ce croquis utilise simplement un. Premier, val est utilisé pour stocker les données de capteur brut, d'une valeur de 0 à 1023. Cette valeur est ensuite traitée à l'aide de la carte fonction à l'échelle de sa gamme à celle de l'asservissement: 0-179.

Cette valeur est ensuite écrit à l'aide de servo myservo.write. Il ya aussi un retard de 15 millisecondes pour atteindre cet endroit. Ensuite, la boucle se répète et met à jour sa position si nécessaire.

void loop () {val = analogRead(potpin) - // lit la valeur du potentiomètre // (valeur entre 0 et 1023) val = carte(val, 0, 1023, 0, 179) - // échelle pour l'utiliser avec le servo // (valeur entre 0 et 180) myservo.écrire(Val) - // définit la position d'asservissement selon la // la valeur réduiteretard(15) - // attend pour le servo arriver}

Avec cette simple addition au circuit, il est possible de contrôler un servomoteur avec toute sorte de l'entrée. Dans cet exemple, le code utilise une entrée analogique, mais avec quelques changements, il pourrait tout aussi bien utiliser une entrée numérique.


» » » » Comment contrôler votre servo avec l'Arduino