/*============================================== MIXAGE =============================== Ce programme pour Nano permet le mixage de deux voies. Il pourra être utilisé pour commander deux servos ou deux variateurs identiques. =====================================================================================*/ #include <Servo.h> // Appel de la librairie servo Servo Variateur_D; // Déclare le variateur du moteur droit Servo Variateur_G; // Déclare le variateur du moteur gauche Servo Gouvernail; // Declare le gouvernail #define Rx_Direction 4 // Déclare la variable recepteur direction #define Rx_Acceleration 8 // Déclare la variable recepteur accelerateur int valA, valB, valxA, valxB, diff ; // Déclare les variables pour les servos int posmin = 45; // Déclare en degrés la position mini des servos int posmax = 135; // Déclare en degrés la position maxi des servos int neutre = 90; // Déclare en degrés la position neutre des servos //====================================================================================== void setup() { pinMode(Rx_Direction, INPUT); // la broche direction en entree pinMode(Rx_Acceleration, INPUT); // la broche acceleration en entree Variateur_D.attach(5); // Attache le variateur droit Variateur_G.attach(6); // Attache le variateur gauche Gouvernail.attach(7); // Attache le servo de gouvernail } //====================================================================================== void loop() { valxA = pulseIn(Rx_Direction, HIGH, 25000); // Donne à la variable (valxA) la valeur de signal de direction valxB = pulseIn(Rx_Acceleration, HIGH, 25000); // Donne à la variable (valxB) la valeur de signal de l accelerateur valxA = map(valxA, 1000, 2000, posmin, posmax); // Calibre des valeurs de (valxA) pour le variateur droit valxB = map(valxB, 1000, 2000, posmin, posmax); // Calibre des valeurs de (valxB) pour le variateur gauche diff = (valxB - neutre); // Calcul l'ecart entre les deux variateurs valA = valxA - diff; valB = valxA + diff; // Calcul la position des servos valA=constrain(valA, posmin, posmax); // Calibre les valeurs pour le variateur dans la plage acceptée valB=constrain(valB, posmin, posmax); // Calibre les valeurs pour le variateur dans la plage acceptée //---------------------------------------------------------------------------------- Variateur_D.write(valA); // Positionne le variateur du moteur droit Variateur_G.write(valB); // Positionne le variateur du moteur gauche Gouvernail.write(valxA); // Positionne le servo de gouvernail } //===========================================FIN DU PROGRAMME ==================================