Faire un Zombie rampant de Robot avec les jambes coupées (19 / 22 étapes)

Étape 19 : Code : ramper

Arduino outils et connaissances de la Fondation

Si vous cherchez une bonne introduction à Arduinos, puis il y a beaucoup de Instructables pour vous, voici un excellent.

Je suis aller à suppose que vous avez téléchargé et installez l' IDE Arduino et sont en mesure de télécharger le code à votre Arduino, la mentionné précédemment instructable vous guidera à travers tout cela et plus encore.

Vue d’ensemble du code

À l’étape précédente, nous avons décidé que nous mettrait en œuvre le rampant de cyclisme par le biais de « cadres » de l’animation qui définirait la position de chacun des servos à un moment donné dans le temps.

Obtenir le code complet est jointe à un fichier, mais je vais aller à travers la plupart des sections ici afin que vous puissiez comprendre eux. Si vous déjà comprendre, alors c’est très bien, parce que vous pouvez sans doute penser à une meilleure façon de faire ce que j’ai fait.

Importer les bibliothèques requises

La seule bibliothèque qui est nécessaire pour que ce code est « Servo.h », qui est plein de fonctions pratiques qui rendent extrêmement facile contrôler des servos de l’Arduino.

Définir des Variables globales

Voici les variables qui sont accessibles depuis n’importe où dans le code. Nous les utilisons pour stocker des informations qui seront nécessaires à un stade ultérieur

Variables de minuterie

La commande millis() renvoie le nombre de millisecondes depuis la carte Arduino a commencé à exécuter le programme en cours. Nous pouvons stocker le résultat de millis() et puis le comparer au résultat à un stade ultérieur pour déterminer combien de temps il a été entre les deux appels.

Servo de détails Variables

Ces variables stockent qui épingle chaque servo est connecté, ainsi que des micros combien correspondent aux min (rentré/abaissé) et max (élevé/étendu)

Frames

Première impression peut être que nous devrions vient de mettre les servos aux positions définies par la première image, attendre un délai donné (frameDuration) et puis définissez les servos vers la position suivante.

Cela se traduira par une animation horrible cependant, étant donné que les servos passera aussi vite que possible dans le poste et ensuite attendre là pour leur prochaine instruction.

Le moyen de contourner cela est d’interpoler entre les cadres. En d’autres termes, si la durée de mon cadre est 2 secondes, après 1,75 secondes je veux les servocommandes de soit les trois quarts (75 %) de la voie entre image 1 et image 2.

C’est un peu trivial de maths de comprendre où le servo devrait être si nous savons combien de la trame est écoulé comme rapport. Dans les mots, c’est juste (image précédente) +(the difference between the next and previous frames) * (pourcentage de trame durée écoulée), ceci est connu comme "interpolation linéaire".

Ici, nous définissons les images réelles. Notez que j’ai utilisé 0 à 1000, où 0 indique rétracté/abaissé et 1000 indique étendu/déclenché. J’aurais pu choisir n’importe quel nombre et il pourrait bien y avoir des choix plus logiques, mais la plage m’a fourni un bon compromis entre la résolution et la lisibilité.

Nous allons utiliser la fonction map() plus tard pour mapper 0 à la variable LSMin et 1000 à LSMax variable que nous avons définie plus tôt (cet exemple est évidemment pour l’épaule gauche, mais il serait le même processus pour tous les autres servos).

Si vous souhaitez définir des animations plus complexes ou plus lisses que vous pourriez facilement ajouter plus d’images et aussi utiliser des nombres autres que min/max. Une possibilité serait d’utiliser environ 8 images pour faire un beau mouvement elliptique.

Afin d’appliquer ce calcul d’interpolation qu'il faut garder une trace de l’image précédente et une trame, donc nous avons mis en place certaines variables de le faire.

Objets de servo

Enfin, créez des objets de servo et assignez-les aux variables. Ceux-ci sont des instances de la classe de servo qui nous inclus dans Servo.h et offrent des fonctions utiles pour contrôler chaque servo.

Définir des fonctions

Fonction de réglage de l’Arduino

La fonction de setup() Arduino est le premier bit de code qui obtient exécuter après que les variables globales ont été définis. Tout ce qui est nécessaire ici pour l’instant est d’attacher les objets servo à leurs codes secrets et démarre le port série, dans le cas où nous voulons signaler quoi que ce soit pour debuggging.

Set image suivante

Cette fonction est appelée une fois que nos servos arriver à la fin d’une trame. Tout ce qu’il fait est :

  • Incrémentation de la « currentFrameIndex » (à moins que nous avons atteint la dernière image, auquel cas il boucle retour à frame 0)
  • Enregistrer la position actuelle de la trame comme « la dernière image »
  • Récupérer la position suivante de la trame du tableau animation

Fonction d’interpolation

Comme décrit précédemment, nous allons utiliser une interpolation linéaire pour déterminer exactement quelle position un servo devrait être dans à un moment donné entre deux images.

Mon professeur de science informatique a toujours dit qu’étant un bon programmeur tout allait être paresseux, si vous pouvez éviter de réécrire le code plusieurs fois en le plaçant dans une fonction, puis le faire.

Cette fonction simplement implémente l’équation d’une interpolation linéaire entre deux images et puis mappe ce poste de cadre à une position du servo et l’applique à l’objet de servo.

Fonction de mise à jour de servo

Cette fonction rend le code plus propre en enlevant une partie de celui-ci de la boucle principale.

Tout d’abord le rapport de la trame qui est déjà terminée est calculé selon le nombre de millisecondes qui se sont écoulées depuis le démarrage de l’armature, divisé par le nombre de millisecondes que mettent à compléter un cadre.

Ce ratio est transmis à la fonction d’interpolation pour chaque servo, mise à jour de la position de chacun.

Boucle principale

La principale loop() est où toute l’action se passe, dès qu’il termine l’exécution de tout le code figurant à l’intérieur d’elle, il saute au début et recommence.

La première étape de la boucle principale est d’enregistrer le nombre de millisecondes depuis le début du programme en cours d’exécution) afin que nous puissions déterminer combien de temps écoulé depuis la dernière itération de la boucle.

En utilisant cette fois nous pouvons déterminer si le temps écoulé est supérieur à la période que nous avons défini pour l’interpolation étapes, dans l’affirmative, appellent la fonction updateServos() pour générer de nouvelles positions interpolées.

On vérifie aussi si le temps écoulé est supérieur à la durée du cadre, auquel cas il faut appeler la fonction setNextFrame().

			
          

Articles Liés

Faire votre propre journal de croquis avec les détenteurs de

Faire votre propre journal de croquis avec les détenteurs de

quand je vais au croquis du champ, je veux mon papier aquarelle, crayons et stylos à encre, effaceur et conduit dans un pack... mais j'aime aussi voyager léger : prenez et allez.  Donc, je suis venu avec ce peu doo-hicky c'est un carnet de croquis pa
Masque de robot avec les yeux Neopixel et iPhone bouche Voice Changer

Masque de robot avec les yeux Neopixel et iPhone bouche Voice Changer

Cette année pour Halloween, nous avons décidé de faire un masque de robot pour notre fils aîné. Il y a quelques composants électroniques différents qui travaillent ensemble pour faire le masque final. Nous avons utilisé des anneaux neopixel et un ard
Comment faire Double Angus Bacon Cheeseburger encapsule avec les épinards et les oignons

Comment faire Double Angus Bacon Cheeseburger encapsule avec les épinards et les oignons

comment faire des hamburger au fromage Double Bacon Angus encapsule avec les épinards et les oignons.Vidéo montre le processus étape par étape.La description de la vidéo Youtube montre les ingrédients exacts et puces étape par étape ce qu'il faut ajo
Comment faire pour créer un CD avec les titres de votre bibliothèque iTunes pour écouter dans votre voiture ?

Comment faire pour créer un CD avec les titres de votre bibliothèque iTunes pour écouter dans votre voiture ?

Si vous avez toujours voulu avoir un CD avec votre musique préférée depuis votre bibliothèque iTunes, donc vous pouvez facilement écouter pendant que vous êtes sur un long trajet avec votre voiture, par exemple, c'est la façon de le faire.Étape 1: Ou
Comment faire un test de mathématiques avec les fichiers de commandes.

Comment faire un test de mathématiques avec les fichiers de commandes.

Créez un fichier texteEnregistrez-le sous « .bat »Copiez le code dans le fichier de commandesCODE : echo offtitle Math quiz color 09 mode con cols=60 mode con lines=30 setlocal ENABLEDELAYEDEXPANSION set q=0 set g=0 goto cop:cop cls echo. echo. echo 
Choses à faire avec les collants - collants - chaussettes en plus de porter leur

Choses à faire avec les collants - collants - chaussettes en plus de porter leur

Je considère les collants d'avoir raison là-haut avec du ruban adhésif comme une trousse d'outilsessentiel. Un ami avec deux filles enregistre pour moi.Avoir une bobine de fil de nylon poisson qui cesse de lâche ? Vous avez une boîte que vous en avez
Faire un jeu vidéo 2D avec l’unité

Faire un jeu vidéo 2D avec l’unité

Dans ce Instructable, je vais vous montrer de faire un jeu vraiment simple de vidéo 2D. C'est un jeu de style coureur infinie, comme "Fly with Me" ou « DoodleJump ».Essayez-le ici!!J'ai fourni un zip de l'exe du jeu que je serai vous montrant co
Configuration des butées sur rampes 1.4 avec firmware Marlin - @section homing

Configuration des butées sur rampes 1.4 avec firmware Marlin - @section homing

Cela va être un, compléter si tout va bien, tutoriel sur la configuration des butées sur la construction des imprimantes 3D sur rampes 1.4 utilisant le micrologiciel Marlin.Je vais utiliser Pronterface/Printrun programme d'accueil pour vous connecter
Comment faire le tour de magie impressionnant avec quatre As

Comment faire le tour de magie impressionnant avec quatre As

Dans cette vidéo, je vais vous apprendre comment faire un tour de magie fou avec les quatre As ! ce truc est vraiment cool et nécessite très peu de pratique donc, même qu'un débutant peut l'arracher !
Comment faire un mul­TI­RO­Tor ou un hybride avec un coupe au Laser ou un vide ancien

Comment faire un mul­TI­RO­Tor ou un hybride avec un coupe au Laser ou un vide ancien

s'il vous plaît comprendre que j'ai créé et tout dans ce posséder instructable,Il s'agit de tout mon contenu et si je devais utiliser quelqu'un elses il serait non contenu sous copyright ou avec leur autorisation, mais encore une fois, c'est tout mon
Costume de robot pour les enfants

Costume de robot pour les enfants

la clé pour faire un costume pour une ondulée âgé de trois an (ou au moins mon ondulées de trois ans) est pour la rendre souple et comme non-constrictive que possible.  J'ai fait une couture pour ce costume, mais il est tout à fait possible de le fai
Le chasseur de têtes A Knex pistolet mise à jour avec les INSTRUCTIONS!!

Le chasseur de têtes A Knex pistolet mise à jour avec les INSTRUCTIONS!!

Porter avec moi parce que c'est mon premier pistolet de poignée de mag jamais donc il peut se présenter comme de la merde ou il ne peut pas.Ce pistolet est sorti un défi pour moi de faire une poignée mag pistolet qui semble différent de celle de la p
Chaud les jambes collier

Chaud les jambes collier

Bon, voici une façon très étrange d'utiliser les jambes de Barbie dans un collier !  Ils sont faciles à sortir de la poupée, mais un peu difficile à poser correctement pour travailler avec la pièce et obtenir le désiré-produit fini.  Jouer un peu ave
Comment faire des petits robots avec nRover Conseil

Comment faire des petits robots avec nRover Conseil

Le nRover, est une petite planche conçue pour construire des petits robots comme UGV (véhicules sans pilote au sol), suiveur de ligne ou à la domotique, il peut être contrôlé par wifi, Bluetooth ou radio de contrôle. L'objectif principal est le dével