

Posté 02 mai 2012 - 10:57
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
)
Si mon commentaire vous a plus laissez nous un avis !
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!
Posté 03 mai 2012 - 08:54
A.R.M.I
Autonomous Robotics Mechanics Intelligent
Posté 03 mai 2012 - 09:34
Posté 03 mai 2012 - 04:23
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 moiVoici 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
A.R.M.I
Autonomous Robotics Mechanics Intelligent
Posté 04 mai 2012 - 02:02
A.R.M.I
Autonomous Robotics Mechanics Intelligent
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
Si mon commentaire vous a plus laissez nous un avis !
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!
Posté 04 mai 2012 - 02:43
Posté 04 mai 2012 - 03:03
mon code :Met ton code et celui que tu as trouvé pour voir.
A.R.M.I
Autonomous Robotics Mechanics Intelligent
Posté 04 mai 2012 - 03:15
Posté 04 mai 2012 - 03:22
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 ...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
A.R.M.I
Autonomous Robotics Mechanics Intelligent
Posté 04 mai 2012 - 03:26
#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 ---
Si mon commentaire vous a plus laissez nous un avis !
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!
Posté 04 mai 2012 - 03:33
vraiment merci mike 118ton 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 "] "
A.R.M.I
Autonomous Robotics Mechanics Intelligent
Posté 04 mai 2012 - 03:36
// 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
Posté 04 mai 2012 - 03:40
#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
0 members, 0 guests, 0 anonymous users