Salut à tous
Je me suis enfin lancer dans la conception de mon projet, après avoir déjà fait plusieurs exercices et après commencer à apprendre les bases de l'arduino je commence à faire quelque progrès. Mon projet est assez simple il consiste à contrôler plusieurs servomoteurs (je ne ses pas encore combine mais au moins 6 je pense) avec l'ordinateur en utilisant les touches du clavier ( par la suite j'utiliserais le logiciel "XPPADER" afin de le contrôler avec une manette de jeu " dans un premier temps je souhaite contrôler ses servomoteurs en restant relier par le câble à l'ordinateur mais par la suite j'espère pouvoir utiliser un émetteur et un récepteur 2.4 G. Hz ( je me Susi vaguement renseigné, j'ai juste constaté qu'il me faudra un deuxième ardu ino si j'ai bien compris)
Enfin bref je me suis d'abord lancer avec se tuto Contrôler la position d'un servomoteur à partir du clavier PC. - Mon Club Elec
Le concept mon bien plus ![]()
Les choses ont commencé à se compliquer quand il a fallu contrôler deux servomoteurs sous ce même principe . J'ai tourné en rond pendant 1-2 semaines .
J'ai finalement pris mon courage à deux mains je me suis plongé tout le week-end dans les librairies et le programme déjà existant ( Je n'avais jamais programmé au auparavant, Cela fait moins 1 mois que je possède mon arduino et jamais je n'avais fait de programme)
J'ai réussi à pondre ceci
Le Code ARDUINO
// --- 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
// --- constantes des broches ---
const int broche_servo=2; //declaration constante de broche
const int broche_servo1=3; //declaration constante de broche
// --- Déclaration des variables globales ---
// variable position du servomoteur en degré
int position_servo=0;
int position_servo1=0;
// variable de stockage des valeurs reçues
int OctetReception=0;
// --- 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_servo1; // crée un objet servo pour contrôler le servomoteur
//**************** 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()
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission
mon_servo.attach(broche_servo, POS_MIN, POS_MAX); // attache l'objet servo à la broche de commande du servomoteur
mon_servo1.attach(broche_servo1, 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_servo1, OUTPUT); //met la broche en sortie
// ------- position initiale du servomoteur
mon_servo.write(position_servo);
delay(200);
mon_servo1.write(position_servo1);
delay(200);
}
//*************** 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 ---
if (Serial.available()>0) { // si un octet en réception
OctetReception=Serial.read(); // Lit le 1er octet reçu et le met dans la variable
OctetReception=OctetReception-48; // isole valeur numerique 0-9 à partir valeur ASCII
// calcule la nouvelle position
position_servo=map(OctetReception,0,9,0,180);
position_servo1=map(OctetReception,0,9,0,180);
//positionne le servomoteur
mon_servo.write(position_servo);
mon_servo1.write(position_servo1);
//entre chaque changement de position
delay (200);
}// fin gestion octet en réception
} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************
// --- Fin programme ---