Étape 4: Composer une esquisse de l’Arduino
Voici le code que j’ai utilisé pour mon système de contrôle.
J’utilise plusieurs bibliothèques pour permettre l’utilisation du récepteur IR, écran LCD sur I2C et le servo.
La plupart de mes variables est définie dans les fonctions qui les utilisent, mais nous devons définir l’axe de réception pour le récepteur IR afin que nous puissions instancier l’objet de récepteur IR. Nous devons également instancier les résultats du récepteur IR et servo et affichage à cristaux liquides.
La fonction d’installation commence en démarrant le serial monitor et de l’initialisation de l’écran LCD et d’allumer le rétro-éclairage. Lors de l’installation il faut aussi commencer le récepteur IR fixer le servo pour la broche numéro 9 et qualifier les broches 6 et 7 sorties pour le moteur et les relais.
La boucle principale appelle juste trois fonctions qui sont décrits ci-dessous
L’idée de la fonction activateDRS est de transformer un servo à une position spécifique, lorsqu’une condition est remplie. Dans ce cas, la condition est la motorSpeed. Si la vitesse du moteur est supérieure à, égal à 200 le servo se déplace au poste 60 deg. Si le servo est inférieure à 200 que le servo sera de retour à la position initiale.
La fonction de contrôleur de moteur simplement définit un potentiomètre comme une entrée analogique et mappe la valeur moteur à la gamme numérique qui est utilisée dans la fonction activateDRS
Ici, nous vérifions pour voir si une commande spécifique a été reçue. Si elle a la nous passons le relais. Si une commande différente est envoyée que se transformera le relais qui coupe l’alimentation au moteur et servo.
La fonction revsPerMilli calcule les révolutions de la roue par milliseconde en attente première pour la valeur d’interruption incrémenter au dessus de 100. Une fois les révolutions atteignent 100 la circonférence et la vitesse de la roue sont calculés. Cette fonction utilise un intégré Arduino fonction appelée millis pour obtenir l’heure en millisecondes.
Remarque : Je n’ai pas été en mesure d’obtenir les encodeurs pour travailler correctement cette fonction n’est pas nécessaire pour le code fonctionne. Je l’ai ajouté principalement comme une amélioration pour plus tard.