Etape 11 : P.3, Code : parler à plusieurs Servos
En plus de transmettre un angle, nous envoyons également un chiffre pour sélectionner quel servo (ou pince) pour écrire dans. Notez que le code n’est n’est plus conçu pour recevoir un angle et écrire cet angle sur les servos, mais est plutôt modifié comme suit un certain nombre (en microsecondes) d’écrire à cet asservissement. Cela, parce que certains servos n’utilisent 1000uS standard - 2000uS angle de codage et il est plus facile de laisser le code côté ordinateur de régler cette question et de faire tous les calculs nécessaires.
Dans le code, nous attendre quelques octets plus Serial.available() qu’avant et puis utilisez une instruction switch pour figurer dehors quoi faire après avoir reçu l’entrée :
Switch (servoSelect) {}
case 0 :
baseRotate.writeMicroseconds(uS) ;
rupture ;
cas 1 :
bottomArm.writeMicroseconds(uS) ;
rupture ;
cas 2 :
middleArm.writeMicroseconds(uS) ;
rupture ;
cas 3 :
endArm.writeMicroseconds(uS) ;
rupture ;
cas 4 :
if(US == 0) {digitalWrite (magnetPin, HIGH);}
else {digitalWrite (magnetPin, LOW);}
rupture ;
cas no 5 :
grip.writeMicroseconds(uS) ;
rupture ;
par défaut :
rupture ;
}
Cas de 0 - 3 sont assez simples - elles répondent individuellement chacun des servos angle-positionnement dans le bras. Cas 4 est l’électro-aimant, qui est activée uniquement si l’entrée de microsecondes est différente de zéro (sa valeur en dehors de la distinction n’est pas pertinente), et 5 cas est la pince de la fin.
Voici une vidéo exemple du bras sous commande manuelle complète démontrant que chacun des servos répond aux entrées d’utilisateur dans l’interface GUI. À la fin, je lance une séquence courte, préprogrammée des coordonnées pour montrer que cette fonctionnalité fonctionne aussi. Notez que le bras oscille après avoir atteint chaque destination car il a encore beaucoup de gauche au cours de l’énergie cinétique de la motion. Cette question est traitée dans l’étape suivante.
Description de la vidéo YouTube :
« Test de la fonctionnalité de base de notre logiciel d’objective-c avec le bras robotisé moins pince. L’ordinateur portable communique avec un Arduino Mega via le port USB et envoie des commandes à 4 servos et 1 interrupteur MOSFET la volonté de contrôler la pince. La carte d’extension assis sur l’Arduino est un bouclier, j’ai conçu et gravé avec un régulateur de tension courant élevé (ampli op + pass transistor) et MOSFET avec chauffeur porte UCC37322.
Nous travaillons actuellement sur un algorithme qui va progressivement ralentir les servos car ils s’approchent de leurs objectifs afin d’éviter les oscillations indésirables (c’est comme la différence entre poussant un oscillateur harmonique à zéro avec un mouvement linéaire versus motion exponentielle en décomposition, il ne voulez pas continuer à aller dans ce dernier cas). »