Programmation robot arduino - Divers - Programmation
Marsh Posté le 14-03-2016 à 12:55:18
Désolé de dire ça, mais si tu n'as aucune idée sur le programme en tant que débutant faudrait peut-être commencer par quelque chose de plus simple non? Tu as déjà de l'expérience avec les Arduino au moins?
Tu peux décomposer ton problème en morceaux:
-mise en oeuvre de la carte Arduino (faire clignoter une LED c'est un bon début, plus tard établir une liaison RS232 avec le PC c'est très pratique pour le débuggage)
-lecture du joystick et affichage sur LED ou RS232 (ou LCD)
-commande des moteurs (à détailler)
-...
Quand tu saura faire tout ça tu vera comment assembler les morceaux. D'ailleurs je pense que sur internet on doit trouver pleins d'infos...
Marsh Posté le 14-03-2016 à 15:24:51
+1 pour les conseils. Parce que là, ton post donne la même impression que "Bonjour, je voudrais construire une maison, mais je ne sais pas planter un clou. Pouvez-vous me donner la marche à suivre ?"
Marsh Posté le 14-03-2016 à 19:25:12
Oui bien-sur j'ai déjà les bases de la programmation en arduino
Marsh Posté le 15-03-2016 à 16:45:02
Ben dans ce cas fais déjà tout ce que tu peux, parcours les différents tutos sur l'Arduino et la robotique et pose tes questions ensuite une fois le projet un peu avancé.
Parce que là ça ressemble plus à "j'aimerai arriver à faire ça, pour l'instant je pars de 0, pouvez vous tout m'expliquer", ce qui n'est ni pédagogique ni conforme à la mentalité du forum (cf les règles)
Marsh Posté le 15-03-2016 à 22:26:13
Bonsoir j'ai pas mal avancer j'ai réussis à faire tourner le servomoteur de droite à gauche avec le joystick mais maintenant il faut faire avancer et reculer avec le moteur cc dans le meme programme et là je bloque.
Marsh Posté le 15-03-2016 à 22:37:04
Voici le programme n'hésitez pas si il y a des améliorations à apporter :
// --- Inclusion des librairies ---
#include <Servo.h> // librairie pour servomoteur
// --- Déclaration des constantes utiles ---
const int APPUI=LOW; // constante pour tester état BP
//--- Constantes utilisées avec le servomoteur
const int ANGLE_MIN=10; // angle position MIN en degrés
const int POS_MIN=600; // largeur impulsion pour position ANGLE_MIN degrés du servomoteur
const int ANGLE_MAX=170; // angle position MAX en degrés
int POS_MAX=2300; // largeur impulsion pour position ANGLE_MAX degrés du servomoteur
// --- Déclaration des constantes des broches E/S numériques ---
const int bpRouge=12; // Constante pour la broche 12
const int bpBleu=9; // Constante pour la broche 9
const int bpJoystick=5; // Constante pour la broche 5
const int broche_servo=6; // Constante pour la broche 6
// --- Déclaration des constantes des broches analogiques ---
const int axe1Joystick=2;
const int axe2Joystick=3;
// --- Déclaration des variables globales ---
int mesure_brute=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
int positionAxe1=2; // Variable pour acquisition résultat brut de conversion analogique numérique axe 1 Joystick
int positionAxe2=3; // Variable pour acquisition résultat brut de conversion analogique numérique axe 2 Joystick
int angleServo=180; // variable de position du servo en degrés
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
//--- Création objet servomoteur
Servo mon_servo; // crée un objet servo pour contrôler le servomoteur
void setup() { // debut de la fonction setup()
//--- Initialisation Servomoteur
mon_servo.attach(broche_servo); // attache l'objet servo à la broche de commande du servomoteur
//mon_servo.attach(broche_servo, POS_MIN, POS_MAX); // attache l'objet servo à la broche de commande du servomoteur avec calibrage auto
// ------- Broches en sorties numériques -------
pinMode (broche_servo,OUTPUT); // Broche broche_servo configurée en sortie
// ------- Broches en entrées numériques -------
pinMode (bpRouge,INPUT); // Broche bpRouge configurée en entrée
pinMode (bpBleu,INPUT); // Broche bpBleu configurée en entrée
pinMode (bpJoystick,INPUT); // Broche bpJoystick configurée en entrée
// ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques -------
// Les BP du shield Joystick + BPx2 dispose d'un rappel au plus sur le shield
mon_servo.writeMicroseconds(angle(angleServo)); // crée impulsion à partir valeur angle - plus précis que write()
} // fin de la fonction setup()
void loop(){ // debut de la fonction loop()
//mesure_brute= analogRead(broche_analogique) ; // acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée
// ----------- code type Shield Arduino Joystick + BPx2 ------
//----- lecture position Joytstick
positionAxe1=analogRead(axe1Joystick); // acquisition conversion analogique numérique sur broche analogique axe 1
positionAxe2=analogRead(axe2Joystick); // acquisition conversion analogique numérique sur broche analogique axe 2
if (positionAxe1>1000) {
angleServo=angleServo+1;
}
if (positionAxe1<400) {
angleServo=angleServo-1;
}
//---- lecture état des BP du shield Joystick
if (digitalRead(bpRouge)==APPUI) { // si appui BP rouge
angleServo=90; // positin médiane
}
if (digitalRead(bpBleu)==APPUI) { // si appui BP
}
if (digitalRead(bpJoystick)==APPUI) { // si appui BP joystick
}
//------------- mise à jour de la position du servomoteur ---
constrain(angleServo,0,180);
mon_servo.writeMicroseconds(angle(angleServo)); // crée impulsion à partir valeur angle - plus précis que write()
delay(10);
//while(1); // stop loop
} // fin de la fonction loop()
int angle(int valeur_angle) {
int impuls=0;
impuls=map(valeur_angle,ANGLE_MIN,ANGLE_MAX,POS_MIN, POS_MAX);
return impuls;
}
Marsh Posté le 13-03-2016 à 23:58:17
Bonsoir je voudrai pour mon loisir programmer les déplacements d'un robot terrestre dont la direction serai contrôlée par un servomoteur (droite,gauche), et un moteur CC (avant;arrière).Je veux donc contrôler les déplacements du robot via un shield joystick (arduino) et je n'ai aucune idée du programme à effectuer (je débute ^^) si quelqu’un peut prendre le temps de le faire ou de m'expliquer (ou les deux :3) ça serai vraiment sympa merci d'avance.
Matériel :
-Carte Arduino UNO : http://www.gotronic.fr/art-carte-arduino-uno-12420.htm
-Shield joystick : http://www.gotronic.fr/art-shield- [...] -19254.htm
- le servomoteur est un servomoteur basique.
-le moteur CC : http://fr.rs-online.com/web/p/moto [...] c/2483867/
-le shield moteur : http://www.conrad.fr/ce/fr/product [...] archDetail