Aller au contenu


Photo

roby de jady


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

#1 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 16 mars 2011 - 07:12

Connaissant rien en robotique il y a 1mois j'ai fait la découverte de ce site .

Ces avec une très grande fierté que je vous présente mon robot grace a vos aide et vos connaissances voila ce que j'ai réalisé :

http://img840.imageshack.us/g/1002407m.jpg/



il possède deux servomoteurs une carte arduino Uno, est un cateur infrarouge sharp 2d120x voila ...

#2 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 16 mars 2011 - 07:14

http://img535.imageshack.us/i/1002408a.jpg/

#3 julkien

julkien

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 032 messages
  • Gender:Male

Posté 16 mars 2011 - 07:40

joli travail câblage propre et soigné
et il fonctionne ???? ;)

#4 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 16 mars 2011 - 09:08

Bonjour

N'oublie pas quelques formes de politesse et que tu peux éditer tes messages (ce qui est mieux)

Sinon c'est un très bon début.


#5 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 16 mars 2011 - 09:19

J'avoue que le câblage est bien propre, contrairement à mes robots :D

#6 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 17 mars 2011 - 07:32

bonjour , oui il fonctionne tres bien .
Je voudrais rajouter un buzzer , quand il detecte un obstacle de moin de 10 cm je voudrais qu'il bip .Ou alors il me reste deux servo moteur de coté je suis en train de reflechir a amelioré mon roby. i vous avez des idées d'amelioration je suis preneur cordialement .

#7 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 17 mars 2011 - 12:52

Bravo pour ces débuts prometteurs.

Comme l'a dit miky-mike, essaye de faire un effort pour les petites formules de politesses et de rajouter tes photos dans le même sujet grâce à la fonction éditer. ;)

#8 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 18 mars 2011 - 05:11

Bonjour je vais vous refaire la presentation de mon robot , et je vais vous parler de mon amelioration que je vais lui apporter.
Pour commencer voila quelque photos :
http://img38.imageshack.us/g/1002407uu.jpg

Alors en faite je possede encor deux servomoteurs dont je ne me sers pas . Je voudrais supprimer la roue fole est mettre 4 roues motrice (4 servomoteurs)

Je travaille dessus pour le code sachant que je utilise le code du robot roby :
#include

#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3

#define SERVOG 1
#define SERVOD 0

#define UPDDG 3
#define UPDDD 4

#define SHARP 4

#define VMAX 5

Servo servog;
Servo servod;
int vLdr = 5;

int getNeutral(int s)
{
if(s == SERVOG)
return 90;
else
return 90;
}


void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);

int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];

if(s == SERVOG)
servog.write(pos += acc);
else
servod.write(pos -= acc);
}


void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}

void handleUPDD(int updd)
{
if(digitalRead(updd) == HIGH)
{
move(ARRIERE);
delay(500);
if (updd == UPDDG)
{
move(DROITE);
}
else
{
move(GAUCHE);
}
delay(800);
}
}

void sharp()
{
int v = analogRead(SHARP);
if (v >= 180)
{
move(ARRIERE);
delay(300);
move(DROITE);
delay(900);
}
else if (v >= 100)
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0);
delay(1500);
}
}
void setup()
{
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);

Serial.begin(9600);
servog.attach(10);
servod.attach(9);
move(AVANT);
}

void loop()
{
handleUPDD(UPDDG);
handleUPDD(UPDDD);
sharp();
move(AVANT);
delay(100);
}
[/code]

si vous avez des infos pour la modif du code je suis preneur cordialement.



#9 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 19 mars 2011 - 04:51

Re bonjour j'ai vu dans un forum qui falais juste rajouter les meme valeur pour les deux servomoteur que je veut rajouter . J'ai besoin d'aide

#10 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 19 mars 2011 - 09:29

que veux tu dire, je ne comprends pas

#11 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 19 mars 2011 - 09:42

Ben, si tu as compris le code que tu as déjà écris, c'est pas bien dur de rajouter 2 servos qui ont la même valeur que les deux autres.

#12 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 20 mars 2011 - 04:02

bonsoir pas sur que j'ai tout compris le code voila ou j'en suis
#include

#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3

#define SERVOG 1
#define SERVOD 0
#define SERVOD 3
#define SERVOG 2

#define UPDDG 3
#define UPDDD 4

#define SHARP 4

#define VMAX 5

Servo servog;
Servo servod;
int vLdr = 5;

int getNeutral(int s)
{
if(s == SERVOG)
return 90;
else
return 90;

}


void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);

int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];

if(s == SERVOG)
servog.write(pos += acc);
else
servod.write(pos -= acc);
}


void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}

void handleUPDD(int updd)
{
if(digitalRead(updd) == HIGH)
{
move(ARRIERE);
delay(500);
if (updd == UPDDG)
{
move(DROITE);
}
else
{
move(GAUCHE);
}
delay(800);
}
}

void sharp()
{
int v = analogRead(SHARP);
if (v >= 180)
{
move(ARRIERE);
delay(300);
move(DROITE);
delay(900);
}
else if (v >= 100)
{
handleS(SERVOG, VMAX);
handleS(SERVOG, VMAX);
handleS(SERVOD, 0);
handleS(SERVOD, 0);
delay(1500);
}
}
void setup()
{
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);

Serial.begin(9600);
servog.attach(11); // servomoteur rajouter
servog.attach(10);
servod.attach(9);
servod.attach(8); // servomoteur rajouter
move(AVANT);
}

void loop()
{
handleUPDD(UPDDG);
handleUPDD(UPDDD);
sharp();
move(AVANT);
delay(100);
}
[/code]


Mai j'ai pas encor tester il faut que je change mon alimentation des servomoteurs.
Pouvez vous me dire si il est bon mon code svp , merci .

#13 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 20 mars 2011 - 08:28

Non, le code n'est pas bon.

Tu as 2 define qui s'appellent pareil, il faut que tu changes ça. Il faut laisser ce qu'il y avait avant.
Ensuite il faut que tu définisse 2 autres variables de type "Servo" et que tu les initialise biensur.
Enfin dans la fonction handleS, il faut que tu mette a jour ces deux variables Servo avec les deux autre qui sont deja mise a jour, par exemple :
servog.write(pos += acc);
servog_avant.write(pos);

Ensuite il y a un doublon de handleS dans la fonction "sharp".

Aprés j'ai jamais trop regardé ce code donc je sais pas vraiment si le reste est bon, mais bon je vois deja tout ca comme probleme.

#14 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 21 mars 2011 - 06:48

Bonjour j'avoue que la je suis en difficulté j'arrive pas a introduire deux servomoteur dans le code du robot suivant j'ai besoin d'aide svp. voici le code actuel
#include

#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3

#define SERVOG 1
#define SERVOD 0

#define UPDDG 3
#define UPDDD 4

#define SHARP 4

#define VMAX 5

Servo servog;
Servo servod;
int vLdr = 5;

int getNeutral(int s)
{
if(s == SERVOG)
return 90;
else
return 90;
}


void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);

int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];

if(s == SERVOG)
servog.write(pos += acc);
else
servod.write(pos -= acc);
}


void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}

void handleUPDD(int updd)
{
if(digitalRead(updd) == HIGH)
{
move(ARRIERE);
delay(500);
if (updd == UPDDG)
{
move(DROITE);
}
else
{
move(GAUCHE);
}
delay(800);
}
}

void sharp()
{
int v = analogRead(SHARP);
if (v >= 180)
{
move(ARRIERE);
delay(300);
move(DROITE);
delay(900);
}
else if (v >= 100)
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0);
delay(1800);
}
}
void setup()
{
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);

Serial.begin(9600);
servog.attach(10);
servod.attach(9);
move(AVANT);
}

void loop()
{
handleUPDD(UPDDG);
handleUPDD(UPDDD);
sharp();
move(AVANT);
delay (80);
}
[/code]
J'ai besoin de robocop mai il se connecte plus je crois .

#15 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 21 mars 2011 - 07:21

Bon faudrait faire un effort, ce n'est pas compliqué de copier coller deux autre servomoteurs :

#include

#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3

#define SERVOG 1
#define SERVOD 0

#define UPDDG 3
#define UPDDD 4

#define SHARP 4

#define VMAX 5

Servo servog;
Servo servod;
Servo servog_avant; // AJOUT
Servo servod_avant; // AJOUT
int vLdr = 5;

int getNeutral(int s)
{
if(s == SERVOG)
return 90;
else
return 90;
}


void handleS(int s, int speed)
{
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);

int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];

if(s == SERVOG) {
servog.write(pos += acc);
servog_avant.write(pos); // AJOUT
}
else {
servod.write(pos -= acc);
servod_avant.write(pos); // AJOUT
}
}


void move(int direction)
{
int m1 = 0, m2 = 0;
switch(direction)
{
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}

void handleUPDD(int updd)
{
if(digitalRead(updd) == HIGH)
{
move(ARRIERE);
delay(500);
if (updd == UPDDG)
{
move(DROITE);
}
else
{
move(GAUCHE);
}
delay(800);
}
}

void sharp()
{
int v = analogRead(SHARP);
if (v >= 180)
{
move(ARRIERE);
delay(300);
move(DROITE);
delay(900);
}
else if (v >= 100)
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0);
delay(1800);
}
}
void setup()
{
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);

Serial.begin(9600);
servog.attach(10);
servod.attach(9);
servog_avant.attach(11); // AJOUT
servod_avant.attach(12); // AJOUT
move(AVANT);
}

void loop()
{
handleUPDD(UPDDG);
handleUPDD(UPDDD);
sharp();
move(AVANT);
delay (80);
}
[/code]

Voila, avant de copier coller les codes sur internet, il serait bon de les analyser pour comprendre ce qu'ils font.

Un autre solution aurait été de brancher tes 2 nouveaux servomoteurs sur les mêmes pins que les 2 servos moteurs existant déjà. Tu n'avais comme ça pas besoin de toucher au code. A toi de choisir ce que tu préfères.


#16 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 21 mars 2011 - 07:30

A merci jbot pour ton aide c'est gentil je vais conpiler immediatement ton code. Demain je par à Lens chez electronique diffussion acheter deux coupleur de pile AA pour l'alimentation .




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

0 members, 0 guests, 0 anonymous users