bonjour a tous
j'ai besoin de faire un système de commande a distance de deux servo ( pour bouger une caméra sur un quadrirotor )
le soucis est que je ne peux pas utiliser ma télécommande RC ( ca serais trop simple ) pour les commander car
le pilotage doit ce faire a distance de la RC
j'ai des modules RDF2173X qui je pense peuvent convenir
je pense utiliser un code tout bête ( voir en bas )
il me permet de faire bouger le servo suivant la position d'un potar ( deux pour être précis monter sur un joystick )
seulement au niveau de la transmission des données c'est la ou je bloque
je ne sais pas du tout comment utiliser ces modules
la doc constructeur ( en pièces jointes )
j'ai plusieurs modes ( du modules ) a ma disposition
un ou tx rx sont utilisé
et d'autre ou je peux me servir de rx tx et in1 comme boutons classiques
avez vous une idée de ce qui serais le mieux ?
et un lien expliquant la transmission via tx rx ?
merci a vous
PS: mon code de base qui fonctionne quand le servo et le potar sont branché sur le meme arduino
// --- Programme Arduino ---
// par X. HINAULT - 02/2010
// www.mon-club-elec.fr
// --- Que fait ce programme ? ---
/* Positionne un servomoteur à l'aide d'une résistance variable (potentiomètre) 10K*/
// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0,
// Utilise les servomoteurs
// --- Circuit à réaliser ---
// Connecter sur la broche 2 (configurée en sortie) la broche de commande d'un servomoteur.
// Broche Analog 0 (=broche 14) en entrée Analogique :
// connecter la sortie d'une résistance variable connectée entre 0V et 5V.
//**************** Entête déclarative *******
// A ce niveau sont déclarées les librairies, les constantes, les variables...
// --- Inclusion des librairies utilisées ---
#include <Servo.h> // librairie pour servomoteur
// --- Déclaration des constantes ---
const int POS_MIN=550; // largeur impulsion pour position 0° servomoteur
// POS_MIN=550 pour futaba S3003
const int POS_MAX=2330; // largeur impulsion pour position 180° servomoteur
// POS_MAS=2330 pour futaba s3003
int angle_servo=0; // variable pour angle du servomoteur
int angle_servo2=0;
// --- constantes des broches ---
const int broche_servo=2; //declaration constante de broche
const int Voie_0=0; //declaration constante de broche analogique
const int broche_servo2=3; //declaration constante de broche
const int Voie_1=1; //declaration constante de broche analogique
// --- Déclaration des variables globales ---
int mesure_brute=0;// Variable pour acquisition résultat brut de conversion analogique numérique
int mesure_brute2=0;// Variable pour acquisition résultat brut de conversion analogique numérique
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
Servo mon_servo; // crée un objet servo pour contrôler le servomoteur
Servo mon_servo2; // servo 2
//**************** FONCTION SETUP = Code d'initialisation *****
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
// --- ici instructions à exécuter au démarrage ---
mon_servo.attach(broche_servo, POS_MIN, POS_MAX);
mon_servo2.attach(broche_servo2, POS_MIN, POS_MAX);
// attache l'objet servo à la broche de commande du servomoteur
// ------- Broches en sortie -------
pinMode(broche_servo, OUTPUT); //met la broche en sortie
pinMode(broche_servo2, OUTPUT); //met la broche en sortie
// ------- Broches en entrée -------
// ------- Activation du rappel au + interne des broches en entrée si nécessaire -------
} // fin de la fonction setup()
// ********************************************************************************
//*************** FONCTION LOOP = Boucle sans fin = coeur du programme *************
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop(){ // debut de la fonction loop()
// --- ici instructions à exécuter par le programme principal ---
// acquisition conversion analogique numérique (100µs env.)
//sur broche analogique indiquée - résultat 10bits (0-1023)
mesure_brute=analogRead(Voie_0);
mesure_brute2=analogRead(Voie_1);
angle_servo=map(mesure_brute,0,1023,0,180);
angle_servo2=map(mesure_brute2,0,1023,0,180);
// convertit la valeur mesurée comprise entre 0 et 1023 en un angle entre 0 et 180
// map(value, fromLow, fromHigh, toLow, toHigh); // permet changement d'échelle simplifié
mon_servo.write(angle_servo); // positionne le servo à l'angle voulu
delay (10); // pause entre 2 mesures et modif position servomoteur
mon_servo2.write(angle_servo2); // positionne le servo à l'angle voulu
delay (10); // pause entre 2 mesures et modif position servomoteur
} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************
// --- Fin programme ---
RFDP8.RF.Modules.Manual.pdf (4 MB)