Étape 3: Conversion du signal de la voiture - pour réservoir-logique
Je suis venu avec le tableau ci-dessus et conclu que j’allais avoir besoin de plusieurs signaux de commande de l’émetteur pour pouvoir contrôler non seulement réservoir manoeuvre mais également rotation de la tourelle et deux lasers (un pour la mitrailleuse) et l’autre pour le canon. J’ai réalisé il y avait des signaux de commande plus disponibles de la Tx/Rx. Donc, j’ai résolu le problème avec le logiciel, en utilisant les leviers de commande Tx d’une manière analogue pour les boutons de transport sur un lecteur de musique, où un équilibre pousser FFWs la musique, et un poussoir momentané sélectionne le morceau de musique suivant. J’ai codé les signaux de sortie dans le programme Arduino comme suit :
FWD/REV steady push - déplace le réservoir FWD/REV
FWD poussoir momentané - bascule le canon laser marche/arrêt
REV poussoir momentané - cabillots la mitrailleuse laser marche/arrêt
GAUCHE/droite levier push constant - déplace le réservoir FWD gauche/droite ou gauche/droite REV en combinaison avec une pression constante du levier FWD/REV. Appuyant sur gauche stable ne fait que le réservoir de tourner à gauche en place. En appuyant sur le droit constant ne fait que le réservoir tourner à droite en place.
Poussoir momentané gauche - active/désactive la rotation de tourelle CCW
Pousser droit momentané - cabillots tourelle CW rotation
Le code est écrit de sorte qu’aucun autre signal d’entrée ne prendra effet après qu’une bascule sur le signal a été reçue avant le cabillot correspondant signal est reçu. Donc, si vous appuyez momentanément à gauche, la tourelle tournera CCW jusqu'à ce que vous encore momentanément poussez à gauche. Tandis que la tourelle est rotative, envoi de n’importe quel autre signal de commande est ignorée. Pour plus de simplicité.
Le programme debounces les levier poussoir signaux entre le Tx en prenant une lecture, en attendant quelques millisecondes, puis en prenant une deuxième lecture. Si la deuxième lecture est le même que le premier, le signal est supposé stable et valide, si non, les signaux de levier sont lus à nouveau. Il introduit un décalage dans le temps, mais il n’est presque pas perceptible (pour moi, en tout cas).
Voici l’esquisse de l’Arduino :