Étape 3: Advanced coding
Maintenant que vous avez vu le code, nous irons sur différentes sections de donner des explications plus profondes.
Tout d’abord, nous allons examiner une section de code au sein de la fonction latchButtons(). Nous allons regarder le bouton debouncing. Lorsque le bouton gauche est enfoncé, le temps depuis la dernière pression sur le bouton doit être calculé. Ceci est fait en utilisant la dernière valeur qui a été stockée et en appelant la fonction millis() pour vérifier l’heure actuelle. Une fois que nous savons que le temps est plus grand alors notre temps de debounce, la fonction vérifie ensuite si le vérin est autorisé à étendre. Si ces deux conditions sont remplies, la fonction peut continuer et faire toutes les choses liées à la presse le bouton.
Cette section suivante est le tout en boucle dans la fonction motorForward(). La partie à regarder ici est les deux retards. La boucle commence en activant le contrôleur de moteur et démarrer le moteur. Si c’est la première manche mais la boucle, il y a un retard plus important. Ce délai plus important est d’ignorer la pointe actuelle qui est livré avec le démarrage d’un moteur. Lorsque vous définissez ce retard, être attention à ne pas mettre trop gros, car il n’y a aucun contrôle pendant il. Si le moteur est bloqué pour une raison quelconque, il ne sera pas en mesure d’être arrêté jusqu'à ce que ce retard est terminée. Si ce n’est pas la première manche, il y a un beaucoup plus petit de retard.
Une fois que le moteur est en mouvement, getFeedback() sert à vérifier le capteur de courant. firstRun est éteint, afin que la prochaine fois dans la boucle, il prend du retard petits, plutôt que le big one. Et enfin, les boutons sont vérifiées pour voir quelles nouvelles mesures devraient être prises.
Les sections suivantes sont tous dans la routine getFeedback(). La routine commence en lisant la broche analogique connectée à la sonde, puis agit en conséquence.
La première chose qui est vérifié, c’est si le moteur est à ses limites. Le code sait quand le moteur est à la limite lorsque la lecture courante est 0. Parfois, il y a une lecture fausse, donc nous avons besoin de mettre en place un comptoir, afin que le moteur ne s’arrête que lorsqu’il est en fait à la limite. Ce morceau de code doit compter jusqu'à la hitLimitsmax avant que le moteur s’arrêtera. Si elle compte moins alors que, la réinitialisation du compteur.
Cette partie suivante est juste après la limite atteinte. Si le moteur se déplace vers l’avant quand il a atteint la limite, il s’éteint le rightlatch. Si il se déplaçait vers l’arrière, il s’éteint le leftlatch. Le code est le même pour les leftlatch.
Enfin, la limite actuelle est vérifiée par rapport c' est maximum. Si c’est fini, la leftlatch est éteint, et le moteur n’est plus autorisé à étendre. Pour réactiver l’extension, le moteur doit être inversé.
Maintenant que nous sommes allés sur le code, nous pouvons l’adapter à vos besoins.