Aller au contenu


Photo
- - - - -

Code de mon robot


  • Veuillez vous connecter pour répondre
81 réponses à ce sujet

#1 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 01:54

salut a tous ,

Je suis sur un projet en robotique et j'ai besoin d'aide en programmation , des petits conseils , des tutoriels ou des bouts de code existant.

mon projet vous pouvez le voir ici

" Base roulante avec un bras robotique positionner a l'avant . le tout controlable a l'aide de mon PC par une Arduino Mega2560 et un module Bluetooth ( la base ET la pince )"

Alors je vous explique ou j'en suis pour vous éviter de lire se qu'il y' a dans le lien :P

mon bras robotique (pince) a 5 moteurs DC , je vais les contrôler avec des L293D . mon châssis aura 2 Servomoteurs pour avancer.

J'ai commencer le code et je voudrais savoir si jusqu'à maintenant il est correcte

int moteur1_pin1 = 2;    
int moteur1_pin2 = 3;    
int moteur1_enable1 = 22; 
int moteur2_pin1 = 4;   
int moteur2_pin2 = 5;  
int moteur2_enable2 = 22; 
int moteur3_pin1 = 6; 
int moteur3_pin2 = 7; 
int moteur3_enable1 = 22; 
int moteur4_pin1 = 8; 
int moteur4_pin2 = 9; 
int moteur4_enable2 = 22; 
int moteur5_pin1 = 10; 
int moteur5_pin2 = 11; 
int moteur5_enable1 = 22; 
  
  
void setup() 
{
   pinMode(moteur1_pin1, OUTPUT); //initialisation de la broche 2 comme étant une sortie
   pinMode(moteur1_pin2, OUTPUT); 
   pinMode(moteur1_enable1, OUTPUT);
   pinMode(moteur2_pin1, OUTPUT);
   pinMode(moteur2_pin2, OUTPUT);
   pinMode(moteur2_enable2, OUTPUT);
   pinMode(moteur3_pin1, OUTPUT);
   pinMode(moteur3_pin2, OUTPUT);
   pinMode(moteur3_enable1, OUTPUT);
   pinMode(moteur4_pin1, OUTPUT);
   pinMode(moteur4_pin2, OUTPUT);
   pinMode(moteur4_enable2, OUTPUT);
   pinMode(moteur5_pin1, OUTPUT);
   pinMode(moteur5_pin2, OUTPUT);
   pinMode(moteur5_enable1, OUTPUT);
}


void loop()           
{
   
}

je vous remercie d'avance pour vos réponses.
Merci a tous
Cordialement Dylan.

#2 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 01:56

ceci est le code pour le bras
Merci a tous
Cordialement Dylan.

#3 jackiwi

jackiwi

    Nouveau membre

  • Membres
  • 34 messages

Posté 20 mai 2012 - 02:21

Salut,
Concernant les constantes que tu définis au début du code, j'aurais mis des #define à la place pour que ça ne prenne pas de mémoire programme. Sinon sur le site Arduino, il conseille plutôt d'utiliser des const int pour que des variables qui sont des constantes dans ton programme soient en lecture seule.
Bonne continuation.

#4 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 02:25

Donc qu'est ce qui serait le mieux ? const int ou #define ?
Merci a tous
Cordialement Dylan.

#5 jackiwi

jackiwi

    Nouveau membre

  • Membres
  • 34 messages

Posté 20 mai 2012 - 02:32

De mon côté je suis partisan du #define ^_^ , mais ce sont des détails maintenant par rapport au programme final que tu auras. Disons que tu as commencé ton post avec un bout de code de départ et il fallait bien discuter de quelque chose :) .

#6 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 02:37

bon je vais te suivre ;) :P
Merci a tous
Cordialement Dylan.

#7 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 02:39

comme ca :

 #define moteur1_pin1 = 2;    
 #define moteur1_pin2 = 3;    
 #define moteur1_enable1 = 22; 
 #define moteur2_pin1 = 4;   
 #define moteur2_pin2 = 5;  
 #define moteur2_enable2 = 22; 
 #define moteur3_pin1 = 6; 
 #define moteur3_pin2 = 7; 
 #define moteur3_enable1 = 22; 
 #define moteur4_pin1 = 8; 
 #define moteur4_pin2 = 9; 
 #define moteur4_enable2 = 22; 
 #define moteur5_pin1 = 10; 
 #define moteur5_pin2 = 11; 
 #define moteur5_enable1 = 22; 
  
  
void setup() 
{
   pinMode(moteur1_pin1, OUTPUT); //initialisation de la broche 2 comme étant une sortie
   pinMode(moteur1_pin2, OUTPUT); 
   pinMode(moteur1_enable1, OUTPUT);
   pinMode(moteur2_pin1, OUTPUT);
   pinMode(moteur2_pin2, OUTPUT);
   pinMode(moteur2_enable2, OUTPUT);
   pinMode(moteur3_pin1, OUTPUT);
   pinMode(moteur3_pin2, OUTPUT);
   pinMode(moteur3_enable1, OUTPUT);
   pinMode(moteur4_pin1, OUTPUT);
   pinMode(moteur4_pin2, OUTPUT);
   pinMode(moteur4_enable2, OUTPUT);
   pinMode(moteur5_pin1, OUTPUT);
   pinMode(moteur5_pin2, OUTPUT);
   pinMode(moteur5_enable1, OUTPUT);
}


void loop()           
{
   
}

Merci a tous
Cordialement Dylan.

#8 jackiwi

jackiwi

    Nouveau membre

  • Membres
  • 34 messages

Posté 20 mai 2012 - 02:49

 #define moteur1_pin1 = 2;    
plutôt :

 #define moteur1_pin1  2   
[/quote]

Autre chose, tu déclares 4 fois la broche 22 en sortie, une seule fois suffit.

#9 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 02:55

donc je n'ai pas besoin de mettre "=" et le ";" a la fin ?

Bah en fait j'ai 5 EN(patte d'arrêt d'urgence) au total dans mes L293D et il sont relie ensemble donc j'ai déclarais que chaque EN d'un moteur est relie au pin 22
Merci a tous
Cordialement Dylan.

#10 jackiwi

jackiwi

    Nouveau membre

  • Membres
  • 34 messages

Posté 20 mai 2012 - 03:00

donc je n'ai pas besoin de mettre "=" et le ";" a la fin ?

Oui.

Oui en hardware tu relies tous les EN ensemble à la pin 22, mais dans le programme il ne suffit que d'une seule ligne pour déclarer la pin 22 en sortie.

#11 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 03:00

comment fais tu ???
Merci a tous
Cordialement Dylan.

#12 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 20 mai 2012 - 03:15

Il pourrai faire comme ce si , a votre avis ?????

const int moteur1_pin1 = 2;    
 const int moteur1_pin2 = 3;    
 const int moteur1_enable1 = 22; 
 const int moteur2_pin1 = 4;   
 const int moteur2_pin2 = 5;  
 const int moteur2_enable2 = 22; 
 const int moteur3_pin1 = 6; 
 const int moteur3_pin2 = 7; 
 const int moteur3_enable1 = 22; 
 const int moteur4_pin1 = 8; 
 const int moteur4_pin2 = 9; 
 const int moteur4_enable2 = 22; 
 const int moteur5_pin1 = 10; 
 const int moteur5_pin2 = 11; 
 const int moteur5_enable1 = 22; 
  
  
void setup() 
{
int i;
for(int i=2;i<=22;i++)//Met les pin 2,3,4,5,6,7,8,9,10,11,22 en mode sortie
pinMode(i,OUTPUT);
}


void loop()           
{
   
}


#13 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 03:17

{
int i;
for(int i=2;i<=22;i++)
pinMode(i,OUTPUT);
}


void loop()           
{
   
}



pourrais tu m'expliquer cette partie ?
Merci a tous
Cordialement Dylan.

#14 jackiwi

jackiwi

    Nouveau membre

  • Membres
  • 34 messages

Posté 20 mai 2012 - 03:28

C'est une structure (boucle for) qui te déclare en sortie de la broche 2 à la broche 22.
C'est simplement pour aller plus vite lorsqu'on s'aperçoit que le code que l'on écrit est répétitif ou itératif.

Sans indiscrétion :mellow: , tu débutes en C ? ou avec la technologie Arduino ?

#15 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 20 mai 2012 - 04:04

Désolé si je répond un peu tard , pour répondre a ta question dydyouaki

"i" est un int et il est défini dans l'instruction for qui est

codé comme exemple: "for (int i = 0; i <= 12; i + +) Le code est en

train de faire 3 choses, qui sont: 1. Permet d'aller dans une boucle, mais

je tiens à garder une trace de combien de fois la boucle, permet de créer

ainsi un int et il faut bien nommer «i». (c'est là que le code lit "int i = 0") 2.

Maintenant, ça tourne en boucle jusqu'à ce que "i" est inférieur ou égal à 12

(c'est là que les codes se lit comme suit «i <= 12") 3. Et chaque fois que tu

boucle, tu augmenter la valeur de "i" par un (c'est là que le code lit " i + + ")

#16 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 04:20

a d'accord ! donc tu fais une incrémentation a la fin , OK . Merci .

Sans indiscrétion :mellow: , tu débutes en C ? ou avec la technologie Arduino ?


Oui je n'ai jamais programmer et je suis en train d'apprendre sur le site du zéro. Je suis deja a la deuxième partie , mais c'est pas facile , donc je fais du mieux que je peux ;)
Merci a tous
Cordialement Dylan.

#17 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 04:26

la j'ai finis de déclarer tout mes moteurs ( les 5 )

const int moteur1_pin1 = 2;    
 const int moteur1_pin2 = 3;    
 const int moteur1_enable1 = 22; 
 const int moteur2_pin1 = 4;   
 const int moteur2_pin2 = 5;  
 const int moteur2_enable2 = 22; 
 const int moteur3_pin1 = 6; 
 const int moteur3_pin2 = 7; 
 const int moteur3_enable1 = 22; 
 const int moteur4_pin1 = 8; 
 const int moteur4_pin2 = 9; 
 const int moteur4_enable2 = 22; 
 const int moteur5_pin1 = 10; 
 const int moteur5_pin2 = 11; 
 const int moteur5_enable1 = 22; 
  
  
void setup() 
{
int i;
for(int i=2;i<=22;i++)//Met les pin 2,3,4,5,6,7,8,9,10,11,22 en mode sortie
pinMode(i,OUTPUT);
}


void loop()           
{
   
}

mais comment faire pour que quand par exemple j'appuie sur la lettre A de mon clavier , le moteur 1 se met a tourner d'un sens et que quand j'appuie sur S il tourne dans l'autre ?

Je pense que je dois utiliser "If else" , non ?
Merci a tous
Cordialement Dylan.

#18 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 20 mai 2012 - 07:26

Oui exacte , il faut que tu utilise des "if" et des "eles" et aussi , des case , avec la

fonction switch.

J'ai une question, que veux dire c'est déclaration ????

const int moteur1_enable1 = 22;
const int moteur2_enable2 = 22;
const int moteur3_enable1 = 22;
const int moteur4_enable2 = 22;
const int moteur5_enable1 = 22;

#19 dydyouaki

dydyouaki

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 792 messages
  • Gender:Male

Posté 20 mai 2012 - 09:12

J'ai une question, que veux dire c'est déclaration ????

const int moteur1_enable1 = 22;
const int moteur2_enable2 = 22;
const int moteur3_enable1 = 22;
const int moteur4_enable2 = 22;
const int moteur5_enable1 = 22;


Eh bien le premier veut dire que le pin enable 1 (qui est une des pattes d'un L293 qui veut dire patte de secour) est relie au pin 22 et meme chose pour les autres , mais en constant .C'est a dire que l'on a declare une seule fois et tout au long du programme on ne pourra pas changer sa valeur . non?!
Merci a tous
Cordialement Dylan.

#20 jackiwi

jackiwi

    Nouveau membre

  • Membres
  • 34 messages

Posté 21 mai 2012 - 12:40

Ces lignes de code veulent dire la même chose. Si tu veux, tu utilises 5 variables différentes que tu initialises à la valeur 22 (il n'y aucune relation avec des entrées/sorties pour le moment).
Puis à la ligne où tu écris : pinMode(NUMERO_DE_LA_BROCHE,OUTPUT); (c'est ici que ta sortie est configurée). Soit tu écris "pinMode(22,OUTPUT);" pour mettre la broche 22 en sortie soit pour faire plus esthétique tu utilises une variable comme "moteur1_enable1" affectée à la valeur 22 pour déclarer la broche en sortie et cela donne "pinMode(moteur1_enable1,OUTPUT);".
Tes lignes là sont simplement un jeu d'écriture pour associer un nom à une valeur, donc tu n'as que besoin d'une variable à la valeur 22 et non 4 autres identiques.




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

0 members, 0 guests, 0 anonymous users