Aller au contenu


Photo
- - - - -

bras robot plus pince


66 réponses à ce sujet

#21 swolf

swolf

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 626 messages
  • Gender:Male

Posté 02 mai 2012 - 10:57

Acheter un oscillo pour un premier projet c'est un peu hard quand même (à oins que tu ai vraiment les moyens auquel cas vas-y ça vaut le coup ;)) pour la prog je veux bien t'aider (mais si tu me pose des questions, pas faire le code à ta place ;))
Notre blog, à FJprod et moi: http://2froblog.wordpress.com/

#22 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 03 mai 2012 - 04:24

Acheter un oscillo pour un premier projet c'est un peu hard quand même (à oins que tu ai vraiment les moyens auquel cas vas-y ça vaut le coup ;)) pour la prog je veux bien t'aider (mais si tu me pose des questions, pas faire le code à ta place ;))


Je suis bien d'accord ^^ ça ne vaut pas le coup si tu ne t'en sert pas après ...

Commander un servo en annalogique ça relève plus d'un petit challenge surmontable pour moins cher qu'une carte programmable. Mais ce n'est pas aisément reproductible, faut refaire les réglages à chaque fois ! donc c'est bon pour un moteur si tu dois vraiment faire du low cost (genre possible pour une valeur totale de composant inférieur à 5 euros ) et si tu as déjà un oscillo à disposition.

Dans ton cas il me semblerait plus simple de passer par une carte programmable mais donc un peu plus cher à cause du prix de cette carte mais c'est inférieur à 50 euros ^^

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#23 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 03 mai 2012 - 08:54

j'ai déja une carte arduino uno a disposition je voulais déja controller mon robot avec .
Bon pour la prog je ne sais pas du tout par ou commencer car je ne trouve aucune explication de comment piloter un servo avec un potentiometre ... Si déja swolf tu pourrai un peu me donner des conseil ou des site je te serai vraiment reconnaissant.
Cordialement Maxou

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#24 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 03 mai 2012 - 09:34

Voici un site ou tu as plein d'exemple de programme pour Arduino : Mon Club Elec
Pour controler ton servo il y a une librairie qui s'appelle Servo : Site Arduino
Et pour les entrées analogiques : Site Arduino

#25 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 03 mai 2012 - 04:23

Voici un site ou tu as plein d'exemple de programme pour Arduino : Mon Club Elec
Pour controler ton servo il y a une librairie qui s'appelle Servo : Site Arduino
Et pour les entrées analogiques : Site Arduino

Merci lestephanoi^^ c'est encore mieux que se que je demander j'ai trouver un code tout pret pour controller 3 servo avec 3 potentiometre je devrais l'essayer apres le week end car je ne suis pas cher moi :)
cordialement Maxou

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#26 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 02:02

salut :)
j'ai un probleme car j'ai trouver le code pour mon bras mes il va falloir que je le met 2 fois et rajoute le code pour controller mon robot ..
Si quelqun sait comment fusionner plusieurs code et m'aider a le faire pour mon code je lui serai vraiment reconnaissant
cordialement Maxou

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#27 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 04 mai 2012 - 02:23

salut :)
j'ai un probleme car j'ai trouver le code pour mon bras mes il va falloir que je le met 2 fois et rajoute le code pour controller mon robot ..
Si quelqun sait comment fusionner plusieurs code et m'aider a le faire pour mon code je lui serai vraiment reconnaissant
cordialement Maxou


Tu as le code il ne te reste plus qu'à le comprendre.( Mais il te faut les base de la programmation). Une fois que tu l'auras compris tu pourras faire ce que tu veux avec : le doubler etc ... Mais on ne va pas faire le travail pour toi et puis ça ne te serais pas instructif !

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#28 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 04 mai 2012 - 02:43

Oui c'est vrai que si tu ne sais pas programmer ça va être compliqué mais si tu veux apprendre commence par le C sur le site du zéro

#29 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 02:45

j'ai déja lu tout sa d'ailleurs j'ai réussi a faire le code pour que mon robot avance et évite les obstacle mais le souci c'est que je ne sais pas comment ajouter le code que j'ai trouver au code que j'ai fait :(

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#30 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 04 mai 2012 - 02:51

Met ton code et celui que tu as trouvé pour voir.

#31 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 03:03

Met ton code et celui que tu as trouvé pour voir.

mon code :


#include <Servo.h>
int vitesse1 = 6;
int vitesse2 = 5;
int direction1 = 7;
int direction2 = 4;
Servo myservo;

int potpin = 0;
int val;

void Moteur1(int valeur_vitesse, boolean sens_avant)
{
analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
if(sens_avant)
{
digitalWrite(direction1,HIGH);
}
else
{
digitalWrite(direction1,LOW);
}
}

void Moteur2(int valeur_vitesse, boolean sens_avant)
{
analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
if(sens_avant)
{
digitalWrite(direction2,HIGH);
}
else
{
digitalWrite(direction2,LOW);
}
}


void setup()
{
myservo.attach(3);
int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT);
}

void loop()
{
val = analogRead(capteur);
val = map(val, 0, 115, 0, 300); // l'échelle pour l'utiliser avec le servo (valeur entre 0 et 300)
myservo.write(val); // définit la position d'asservissement en fonction de la valeur à l'échelle
delay(400);

if (val >= 180) // si je suis à moins de 10 cm d'un obstacle avec mon robot
{
Moteur1(0,true); //j'arrete le moteur 1
Moteur2(0,true); // j'arrete le moteur 2
delay(200); //j'attend 2 seconde
Moteur1(255,true); //J'avance tout droit
Moteur2(0,true); // j'arrete le moteur 2
delay(400);
Moteur1(255,true); //J'avance tout droit en metant les 2 moteurs à fond
Moteur2(255,false); //J'avance tout droit en metant les 2 moteurs à fond

}
else
{
Moteur1(255,false);
Moteur2(255,true);
}

}



Le code que j'ai trouver :

// par X. HINAULT - Le 28/02/2010
// www.mon-club-elec.fr

// --- Que fait ce programme ? ---
/* contrôler 3 servomoteurs à l'aide de 3 résistances variables*/

// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques analog 0, analog 1, analog 2,
// Utilise les servomoteurs

// --- Circuit à réaliser ---

// Connecter sur la broche 2 (configurée en sortie) broche de commande du servomoteur 0 alimenté par alim externe
// Connecter sur la broche 3 (configurée en sortie) broche de commande du servomoteur 1 alimenté par alim externe
// Connecter sur la broche 4 (configurée en sortie) broche de commande du servomoteur 2 alimenté par alim externe

// Broche Analog 0 (=broche 14) en entrée Analogique
// Broche Analog 1 (=broche 15) en entrée Analogique
// Broche Analog 2 (=broche 16) en entrée Analogique

// IMPORTANT : IL EST IMPERATIF D'UTILISER UNE ALIMENTATION EXTERNE DE 6V POUR ALIMENTER LES SERVOMOTEURS

//**************** 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

// --- constantes des broches ---

const int SERVO_0=2; //declaration constante de broche
const int SERVO_1=3; //declaration constante de broche
const int SERVO_2=4; //declaration constante de broche

const int Voie_0=0; //declaration constante de broche analogique
const int Voie_1=1; //declaration constante de broche analogique
const int Voie_2=2; //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
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

int angle_servo_0=0; // variable pour angle du servomoteur
int angle_servo_1=0; // variable pour angle du servomoteur
int angle_servo_2=0; // variable pour angle du servomoteur

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
Servo mon_servo_0; // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_1; // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_2; // 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()

// --- ici instructions à exécuter au démarrage ---

mon_servo_0.attach(SERVO_0, POS_MIN, POS_MAX); // attache l'objet servo à la broche de commande du servomoteur
mon_servo_1.attach(SERVO_1, POS_MIN, POS_MAX); // attache l'objet servo à la broche de commande du servomoteur
mon_servo_2.attach(SERVO_2, POS_MIN, POS_MAX); // attache l'objet servo à la broche de commande du servomoteur

// ------- Broches en sortie -------

pinMode(SERVO_0, OUTPUT); //met la broche en sortie
pinMode(SERVO_1, OUTPUT); //met la broche en sortie
pinMode(SERVO_2, 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 ---

//========== SERVO_0 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023)
mesure_brute=analogRead(Voie_0);

angle_servo_0=map(mesure_brute,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_0.write(angle_servo_0); // positionne le servo à l'angle voulu

//========== SERVO_1 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023)
mesure_brute=analogRead(Voie_1);

angle_servo_1=map(mesure_brute,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_1.write(angle_servo_1); // positionne le servo à l'angle voulu

//========== SERVO_2 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023)
mesure_brute=analogRead(Voie_2);

angle_servo_2=map(mesure_brute,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_2.write(angle_servo_2); // positionne le servo à l'angle voulu

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme ---

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#32 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 04 mai 2012 - 03:06

Met ton code en page grâce au petit icone au dessus de la zone de texte de ton message par ce que c'est illisible

#33 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 03:12

Met ton code en page grâce au petit icone au dessus de la zone de texte de ton message par ce que c'est illisible

je ne trouve pas l'icone ...
ou est-elle ?

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#34 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 04 mai 2012 - 03:15

Quand tu écris ton message il y a des petites icônes au dessus de la zone de texte (il y a pour souligner, mettre en gras, un smiley, une enveloppe, des chevrons (<>), ...), ben tu click sur les chevrons (<>) (c'est marqué "Insérer un extrait de code" quand tu passe dessus) et tu met ton code entre ce qui apparait

#35 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 03:22

Quand tu écris ton message il y a des petites icônes au dessus de la zone de texte (il y a pour souligner, mettre en gras, un smiley, une enveloppe, des chevrons (<>), ...), ben tu click sur les chevrons (<>) (c'est marqué "Insérer un extrait de code" quand tu passe dessus) et tu met ton code entre ce qui apparait

je ne dois pas avoir la meme version car je n'ai pas de smiley ni de truc pour mettre en gras mais un bouton pour vérifier ...

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#36 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 969 messages
  • Gender:Male
  • Location:Anglet

Posté 04 mai 2012 - 03:26

ton code :

#include <Servo.h> 
int vitesse1 = 6;
 int vitesse2 = 5;
 int direction1 = 7;
 int direction2 = 4; 
Servo myservo;
 
int potpin = 0;
 int val;
 
void Moteur1(int valeur_vitesse, boolean sens_avant)
 {
 analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
 if(sens_avant)
 {
 digitalWrite(direction1,HIGH);
 }
 else
 {
 digitalWrite(direction1,LOW);
 }
 }
 
void Moteur2(int valeur_vitesse, boolean sens_avant)
 {
 analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
 if(sens_avant)
 {
 digitalWrite(direction2,HIGH);
 }
 else
 {
 digitalWrite(direction2,LOW);
 }
 } 


void setup()
 {
 myservo.attach(3);
 int i;
 for(i=5;i<=8;i++)
 pinMode(i, OUTPUT);
}
 
void loop()
 {
 val = analogRead(capteur);
 val = map(val, 0, 115, 0, 300); // l'échelle pour l'utiliser avec le servo (valeur entre 0 et 300)
 myservo.write(val); // définit la position d'asservissement en fonction de la valeur à l'échelle
 delay(400);
 
if (val >= 180) // si je suis à moins de 10 cm d'un obstacle avec mon robot
 {
 Moteur1(0,true); //j'arrete le moteur 1
 Moteur2(0,true); // j'arrete le moteur 2
 delay(200);    //j'attend 2 seconde
 Moteur1(255,true); //J'avance tout droit 
Moteur2(0,true); // j'arrete le moteur 2
 delay(400);
Moteur1(255,true); //J'avance tout droit en metant les 2 moteurs à fond
 Moteur2(255,false); //J'avance tout droit en metant les 2 moteurs à fond
 
}
 else
 {
 Moteur1(255,false);
 Moteur2(255,true); 
}
 
}



Le code que j'ai trouver :

// par X. HINAULT - Le 28/02/2010
// www.mon-club-elec.fr 

// --- Que fait ce programme ? ---
/* contrôler 3 servomoteurs à l'aide de 3 résistances variables*/

// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques  analog 0,  analog 1,  analog 2, 
// Utilise les servomoteurs 

// --- Circuit à réaliser ---

// Connecter  sur la broche 2 (configurée en sortie) broche de commande du servomoteur 0 alimenté par alim externe
// Connecter  sur la broche 3 (configurée en sortie) broche de commande du servomoteur 1 alimenté par alim externe
// Connecter  sur la broche 4 (configurée en sortie) broche de commande du servomoteur 2 alimenté par alim externe

// Broche Analog 0 (=broche 14) en entrée Analogique 
// Broche Analog 1 (=broche 15) en entrée Analogique 
// Broche Analog 2 (=broche 16) en entrée Analogique 

// IMPORTANT : IL EST IMPERATIF D'UTILISER UNE ALIMENTATION EXTERNE DE 6V POUR ALIMENTER LES SERVOMOTEURS

//**************** 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

// --- constantes des broches ---

const int SERVO_0=2; //declaration constante de broche 
const int SERVO_1=3; //declaration constante de broche 
const int SERVO_2=4; //declaration constante de broche 

const int Voie_0=0; //declaration constante de broche analogique
const int Voie_1=1; //declaration constante de broche analogique
const int Voie_2=2; //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
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

int angle_servo_0=0; // variable pour angle du servomoteur
int angle_servo_1=0; // variable pour angle du servomoteur
int angle_servo_2=0; // variable pour angle du servomoteur

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
Servo mon_servo_0;  // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_1;  // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_2;  // 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()

// --- ici instructions à exécuter au démarrage --- 

mon_servo_0.attach(SERVO_0, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur
mon_servo_1.attach(SERVO_1, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur
mon_servo_2.attach(SERVO_2, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur

// ------- Broches en sortie -------  

pinMode(SERVO_0, OUTPUT); //met la broche en sortie 
pinMode(SERVO_1, OUTPUT); //met la broche en sortie 
pinMode(SERVO_2, 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 --- 

//========== SERVO_0 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
mesure_brute=analogRead(Voie_0); 

angle_servo_0=map(mesure_brute,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_0.write(angle_servo_0); // positionne le servo à l'angle voulu

//========== SERVO_1 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
mesure_brute=analogRead(Voie_1); 

angle_servo_1=map(mesure_brute,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_1.write(angle_servo_1); // positionne le servo à l'angle voulu

//========== SERVO_2 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
mesure_brute=analogRead(Voie_2); 

angle_servo_2=map(mesure_brute,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_2.write(angle_servo_2); // positionne le servo à l'angle voulu

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme ---

la prochaine fois encadre ton code par "[code ]" au début et "[/code ]" à la fin sans les espaces entre le le e de code et le crochet "] "

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#37 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 03:33

ton code :

#include <Servo.h> 
int vitesse1 = 6;
 int vitesse2 = 5;
 int direction1 = 7;
 int direction2 = 4; 
Servo myservo;
 
int potpin = 0;
 int val;
 
void Moteur1(int valeur_vitesse, boolean sens_avant)
 {
 analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
 if(sens_avant)
 {
 digitalWrite(direction1,HIGH);
 }
 else
 {
 digitalWrite(direction1,LOW);
 }
 }
 
void Moteur2(int valeur_vitesse, boolean sens_avant)
 {
 analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
 if(sens_avant)
 {
 digitalWrite(direction2,HIGH);
 }
 else
 {
 digitalWrite(direction2,LOW);
 }
 } 


void setup()
 {
 myservo.attach(3);
 int i;
 for(i=5;i<=8;i++)
 pinMode(i, OUTPUT);
}
 
void loop()
 {
 val = analogRead(capteur);
 val = map(val, 0, 115, 0, 300); // l'échelle pour l'utiliser avec le servo (valeur entre 0 et 300)
 myservo.write(val); // définit la position d'asservissement en fonction de la valeur à l'échelle
 delay(400);
 
if (val >= 180) // si je suis à moins de 10 cm d'un obstacle avec mon robot
 {
 Moteur1(0,true); //j'arrete le moteur 1
 Moteur2(0,true); // j'arrete le moteur 2
 delay(200);    //j'attend 2 seconde
 Moteur1(255,true); //J'avance tout droit 
Moteur2(0,true); // j'arrete le moteur 2
 delay(400);
Moteur1(255,true); //J'avance tout droit en metant les 2 moteurs à fond
 Moteur2(255,false); //J'avance tout droit en metant les 2 moteurs à fond
 
}
 else
 {
 Moteur1(255,false);
 Moteur2(255,true); 
}
 
}



Le code que j'ai trouver :

// par X. HINAULT - Le 28/02/2010
// www.mon-club-elec.fr 

// --- Que fait ce programme ? ---
/* contrôler 3 servomoteurs à l'aide de 3 résistances variables*/

// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques  analog 0,  analog 1,  analog 2, 
// Utilise les servomoteurs 

// --- Circuit à réaliser ---

// Connecter  sur la broche 2 (configurée en sortie) broche de commande du servomoteur 0 alimenté par alim externe
// Connecter  sur la broche 3 (configurée en sortie) broche de commande du servomoteur 1 alimenté par alim externe
// Connecter  sur la broche 4 (configurée en sortie) broche de commande du servomoteur 2 alimenté par alim externe

// Broche Analog 0 (=broche 14) en entrée Analogique 
// Broche Analog 1 (=broche 15) en entrée Analogique 
// Broche Analog 2 (=broche 16) en entrée Analogique 

// IMPORTANT : IL EST IMPERATIF D'UTILISER UNE ALIMENTATION EXTERNE DE 6V POUR ALIMENTER LES SERVOMOTEURS

//**************** 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

// --- constantes des broches ---

const int SERVO_0=2; //declaration constante de broche 
const int SERVO_1=3; //declaration constante de broche 
const int SERVO_2=4; //declaration constante de broche 

const int Voie_0=0; //declaration constante de broche analogique
const int Voie_1=1; //declaration constante de broche analogique
const int Voie_2=2; //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
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

int angle_servo_0=0; // variable pour angle du servomoteur
int angle_servo_1=0; // variable pour angle du servomoteur
int angle_servo_2=0; // variable pour angle du servomoteur

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
Servo mon_servo_0;  // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_1;  // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_2;  // 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()

// --- ici instructions à exécuter au démarrage --- 

mon_servo_0.attach(SERVO_0, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur
mon_servo_1.attach(SERVO_1, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur
mon_servo_2.attach(SERVO_2, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur

// ------- Broches en sortie -------  

pinMode(SERVO_0, OUTPUT); //met la broche en sortie 
pinMode(SERVO_1, OUTPUT); //met la broche en sortie 
pinMode(SERVO_2, 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 --- 

//========== SERVO_0 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
mesure_brute=analogRead(Voie_0); 

angle_servo_0=map(mesure_brute,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_0.write(angle_servo_0); // positionne le servo à l'angle voulu

//========== SERVO_1 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
mesure_brute=analogRead(Voie_1); 

angle_servo_1=map(mesure_brute,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_1.write(angle_servo_1); // positionne le servo à l'angle voulu

//========== SERVO_2 ===============
// acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
mesure_brute=analogRead(Voie_2); 

angle_servo_2=map(mesure_brute,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_2.write(angle_servo_2); // positionne le servo à l'angle voulu

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme ---

la prochaine fois encadre ton code par "[code ]" au début et "[/code ]" à la fin sans les espaces entre le le e de code et le crochet "] "

vraiment merci mike 118 :D

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#38 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 03:36

le code trouver :


// par X. HINAULT - Le 28/02/2010
// www.mon-club-elec.fr 

// --- Que fait ce programme ? ---
/* contrôler 3 servomoteurs à l'aide de 3 résistances variables*/

// --- Fonctionnalités utilisées ---
// Utilise la conversion analogique numérique 10bits sur les voies analogiques  analog 0,  analog 1,  analog 2, 
// Utilise les servomoteurs 

// --- Circuit à réaliser ---

// Connecter  sur la broche 2 (configurée en sortie) broche de commande du servomoteur 0 alimenté par alim externe
// Connecter  sur la broche 3 (configurée en sortie) broche de commande du servomoteur 1 alimenté par alim externe
// Connecter  sur la broche 4 (configurée en sortie) broche de commande du servomoteur 2 alimenté par alim externe

// Broche Analog 0 (=broche 14) en entrée Analogique 
// Broche Analog 1 (=broche 15) en entrée Analogique 
// Broche Analog 2 (=broche 16) en entrée Analogique 

// IMPORTANT : IL EST IMPERATIF D'UTILISER UNE ALIMENTATION EXTERNE DE 6V POUR ALIMENTER LES SERVOMOTEURS

//**************** 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

// --- constantes des broches ---

const int SERVO_0=2; //declaration constante de broche 
const int SERVO_1=3; //declaration constante de broche 
const int SERVO_2=4; //declaration constante de broche 

const int Voie_0=0; //declaration constante de broche analogique
const int Voie_1=1; //declaration constante de broche analogique
const int Voie_2=2; //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
float mesuref=0.0;// Variable pour calcul résultat décimal de conversion analogique numérique

int angle_servo_0=0; // variable pour angle du servomoteur
int angle_servo_1=0; // variable pour angle du servomoteur
int angle_servo_2=0; // variable pour angle du servomoteur

// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
Servo mon_servo_0;  // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_1;  // crée un objet servo pour contrôler le servomoteur
Servo mon_servo_2;  // 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()

  // --- ici instructions à exécuter au démarrage --- 

  mon_servo_0.attach(SERVO_0, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur
  mon_servo_1.attach(SERVO_1, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur
  mon_servo_2.attach(SERVO_2, POS_MIN, POS_MAX);  // attache l'objet servo à la broche de commande du servomoteur

  // ------- Broches en sortie -------  

  pinMode(SERVO_0, OUTPUT); //met la broche en sortie 
  pinMode(SERVO_1, OUTPUT); //met la broche en sortie 
  pinMode(SERVO_2, 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 --- 

  //========== SERVO_0 ===============
  // acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
  mesure_brute=analogRead(Voie_0); 

  angle_servo_0=map(mesure_brute,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_0.write(angle_servo_0); // positionne le servo à l'angle voulu

  //========== SERVO_1 ===============
  // acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
  mesure_brute=analogRead(Voie_1); 

  angle_servo_1=map(mesure_brute,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_1.write(angle_servo_1); // positionne le servo à l'angle voulu

  //========== SERVO_2 ===============
  // acquisition conversion analogique numérique (100µs env.) sur broche analogique indiquée - résultat 10bits (0-1023) 
  mesure_brute=analogRead(Voie_2); 

  angle_servo_2=map(mesure_brute,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_2.write(angle_servo_2); // positionne le servo à l'angle voulu

} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************

//*************** Autres Fonctions du programme *************

// --- Fin programme --- 

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#39 geek maxou

geek maxou

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 663 messages
  • Gender:Male
  • Location:Pas-de-Calais 62

Posté 04 mai 2012 - 03:40

mon code :




#include <Servo.h> 
int vitesse1 = 6;
 int vitesse2 = 5;
 int direction1 = 7;
 int direction2 = 4; 
Servo myservo;

 int potpin = 0;
 int val;

 void Moteur1(int valeur_vitesse, boolean sens_avant)
 {
 analogWrite(vitesse1,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
 if(sens_avant)
 {
 digitalWrite(direction1,HIGH);
 }
 else
 {
 digitalWrite(direction1,LOW);
 }
 }

 void Moteur2(int valeur_vitesse, boolean sens_avant)
 {
 analogWrite(vitesse2,valeur_vitesse); //valeur_vitesse = 0 à l'arrêt, et 255 pour vitesse maximum
 if(sens_avant)
 {
 digitalWrite(direction2,HIGH);
 }
 else
 {
 digitalWrite(direction2,LOW);
 }
 } 


void setup()
 {
 myservo.attach(3);
 int i;
 for(i=5;i<=8;i++)
 pinMode(i, OUTPUT);
 }

 void loop()
 {
 val = analogRead(capteur); // lit la valeur du capteur
 val = map(val, 0, 115, 0, 300); // l'échelle pour l'utiliser avec le servo (valeur entre 0 et 300)
 myservo.write(val); // définit la position d'asservissement en fonction de la valeur à l'échelle
 delay(400);

 if (val >= 180) // si je suis à moins de 10 cm d'un obstacle avec mon robot
 {
 Moteur1(0,true); //j'arrete le moteur 1
 Moteur2(0,true); // j'arrete le moteur 2
 delay(200); //j'attend 2 seconde
 Moteur1(255,true); //J'avance tout droit 
Moteur2(0,true); // j'arrete le moteur 2
 delay(400);
 Moteur1(255,true); //J'avance tout droit en metant les 2 moteurs à fond
 Moteur2(255,false); //J'avance tout droit en metant les 2 moteurs à fond

 }
 else
 {
 Moteur1(255,false);
 Moteur2(255,true); 
}

 }

A.R.M.I

Autonomous Robotics Mechanics Intelligent


#40 lestephanoi

lestephanoi

    Habitué

  • Membres
  • PipPip
  • 161 messages
  • Gender:Male

Posté 04 mai 2012 - 04:00

Est ce que tu veux pouvoir bouger ton bras quand tu roule ?



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users