Étape 3: Plex Bot, codage
Tout le code est hébergé sur GitHub.
Je pense que c’est la partie la plus intéressante de créer le robot. J’ai vu beaucoup de code arduino pour robots. La plupart du code est très stupide. Je ne dis pas cela d’une manière moyenne sur le code ou le créateur ; le code est tout simplement pas très polyvalent. Je pourrais joindre 10 servos directement à mon microcontrôleur et bang la commande pour eux dans la moyen le plus direct possible. Cette façon de faire est agréable car elle est simple. Il est facile de comprendre ce qui se passe sur et facile à utiliser.
Arduino est basé en C++, ce qui signifie que les objets sont inhérents à la langue. Objets font un programme plus agréable à utiliser. Plutôt que d’y attacher le servo et qui appelle chaque fois que je veux passer un joint, j’ai créer des objets qui font tellement plus.
La classe qui gère les servos est rServo pour servo robot. Cela déclare où le servo est. Il s’occupe également de déplacer l’asservissement à des positions différentes. La classe possède également des contraintes sur quelle distance il laissera le servo se déplacer. Par exemple, la cheville a une plage de -15 à 25. Il s’agit d’une limite physique à la gamme des servos et est également logiciel limité pour éviter d’endommager le robot. La classe gère également un décalage pour les servos. Le klaxon n’est pas toujours à 90 degrés où nous voulons qu’il soit. Ce réglage dans le logiciel permet au robot pour être parfaitement droite, même si au centre du servo il ne serait pas. Une dernière caractéristique de la classe que j’ai jamais utilisé était le moment. Chaque servocommande a une min et le calendrier de pouls maximum qui peut être changé. Cela servirait seulement s’il y avait un servo excentrique nécessitant une valeur différente à la normale.
Contrôle de chaque servo sur son propre serait une douleur. C’est pourquoi la classe jambe existe. Jambe crée 5 rServo objets et est chargé de déplacer cette jambe et en assignant des compensations. Cela permet pour un tableau de 5 à envoyer à l’asservissement, et qui se traduit par le mouvement de ces 5 servos. Chaque jambe sait aussi si c’est la jambe droite ou gauche. Ceci est important car les valeurs de certains servos doivent être mis en miroir. Le code pour les jambes ressemble à ceci :
Jambe droite = jambe (rLegAddress, true) ;
Right.leg({0,10,15,0,0}) ;