Étape 15 : Le Script
Le script de l’Arduino Uno est joint ci-dessous.
Eh bien, je suis un programmeur C depuis des décennies, donc, pour moi, le logiciel d’écriture était une promenade dans le passé et était probablement la partie la plus facile de ce projet ensemble.
J’ai décidé de résumé sur les pilotes de bas niveau réels pour les LEDs, IR, servo et moteur. Bien que j’étais trop paresseux pour en fait aller le parcours orienté objet et séparer ces fonctionnalités dans leurs propres classes C++, il ne serait pas difficile de le faire. Cet exercice est laissé au lecteur.
De direction
J’ai partitionné la position des roues en un nombre discret de pas gauche et droite, afin qu’en appuyant sur les touches flèche gauche ou droite de la télécommande ajoute ou soustrait de la tour-valeur actuelle (avec contrôle de la gamme). Il a été ensuite mappé à une valeur en pourcentage (-100 % à 100 %, où 0 signifie "tout droit"), qui laisse au niveau plus bas de décider combien de degrés réels représente 100 % et cette valeur alimentaire à l’asservissement. Cela m’a donné le plus de flexibilité dans le code tweek, tourner à gauche/droite max degrés, mais aussi combien bouton presses il faut pour y arriver. J’ai aussi utilisé le bouton central (entre les flèches gauche et droite) pour centrer les roues immédiatement (tour-valeur définie à 0).
Vitesse
J’ai fait quelque chose de similaire avec la vitesse du moteur avance et en arrière : J’ai créé une série discrète de mesures pour la vitesse, allant d’un nombre positif, par le biais de 0, un nombre négatif : est positive, 0 est stop, négatif est en arrière. Lorsque vous appuyez sur la flèche vers le haut, elle augmente la valeur actuelle ; Lorsque vous appuyez sur la flèche vers le bas, il la diminue (avec contrôle de la gamme). Il y a également un bouton qui définit la vitesse à 0 (arrêt). Le code de haut niveau correspond ce nombre à une valeur en pourcentage (-100 %... 100 %) et puis la passe vers le bas pour le code de bas niveau, qui qui correspond à la gamme de l’Arduino (à savoir, 0-255) de conduire le HBridge. Encore une fois, toute cette abstraction m’a permis de tweek la plage de vitesse, vers l’avant et vers l’arrière, ainsi que le nombre de touches qu’il faut pour arriver à 100 %.
À l’avenir, je pourrais employer quelque chose de plus comme un joystick pour contrôler ces fonctions, bien que, puisque le clavier de la télécommande IR est plutôt maladroit d’utiliser.
LEDs
Les lumières de programmation était probablement le plus amusant. J’ai mis en place un pilote générique de machine d’État et ensuite défini ensembles distincts de machines d’État pour chaque paire de LED. Cela m’a permis de conduire chacun des 6 LEDs avec des modèles prédéfinis soit ensemble ou séparément.
J’ai tracé arbitrairement les boutons de la tablette numéros pour être utilisés comme témoins LED: 4 moyens virage à gauche signal, 6 droit-turn, 5 clignotants d’avertissement et d’autres au besoin. Il aurait été sympa pour le clignotant gauche - et droit-boutons à bascule, mais j’ai jamais eu à celui dans le programme.