- Robot Maker
- → Contenu de jady2909
Contenu de jady2909
Il y a 37 élément(s) pour jady2909 (recherche limitée depuis 04-mai 13)
Par type de contenu
Voir pour ce membre
#27985 roby de jady
Posté par jady2909 sur 21 mars 2011 - 06:48 dans Archives
#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 .
#22395 petit probleme de code
Posté par jady2909 sur 20 mars 2011 - 07:35 dans Programmation
#22394 petit probleme de code
Posté par jady2909 sur 20 mars 2011 - 07:32 dans Programmation
#22393 petit probleme de code
Posté par jady2909 sur 20 mars 2011 - 07:21 dans Programmation
#22391 petit probleme de code
Posté par jady2909 sur 20 mars 2011 - 07:05 dans Programmation
#incluse #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 VMAX 5
void * operator new(size_t size) {
return malloc(size);
}
class PareChocs {
public:
byte choc(int updd) {
// On retourne l'état du pin.
// S'il est haut c'est que c'est un choc.
return digitalRead(updd);
}
PareChocs() {
// A la création du PareChocs les pins sont prets ;p
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);
}
};
class Chassis {
// Le chassis a deux servomoteurs
Servo servog; // MESSAGE D'ERREUR ICI :"servo" does not name a type , lors de la compilation
Servo servod;}
// Fonction du tuto de robocop avec mes valeurs
int getNeutral(int s) {
if(s == SERVOG)
return 90;
else
return 90;
}
// Fonction du tuto de robocop
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);
}
public:
// Le chassis se déplace grâce à la fonction
// du tutoriel de robocop
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);
}
Chassis() {
// Lors de la création du chassis, l'attachement aux
// pins de l'arduino se fera automatiquement
servog.attach(10);
servod.attach(9);
}
};
class Roby {
PareChocs * parechocs;
Chassis * chassis;
byte detecterColision(int updd) {
return parechocs->choc(updd);
}
void contourner(int sens) {
chassis->move(ARRIERE);
delay(500);
chassis->move(sens);
delay(800);
}
public:
// Déclaration de l'atribut modeAutomatique
// Un puriste C++ mettrait bool à la place
// de byte. Mais je n'ai pas envie de vous
// perdre, je garde byte car vous le
// connaissez bien.
byte modeAutomatique;
Roby() {
parechocs = new PareChocs();
chassis = new Chassis();
// le mode automatique est désactivé
// à la construction de Roby
modeAutomatique = false;
}
void arreter() {
chassis->move(-1);
// va forcer la fonction de robocop
// à mettre la vitesse 0
}
void bouger(byte direction) {
// Si Roby veut bouger. Il sait le faire
// Il sait maintenant qu'il faut bouger le chassis
chassis->move(direction);
}
void agirAutomatiquement() {
if(detecterColision(UPDDG))
contourner(DROITE);
else if(detecterColision(UPDDD))
contourner(GAUCHE);
else
bouger(AVANT);
}
};
Roby * roby;
void setup() {
roby = new Roby();
roby->arreter();
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
switch(Serial.read()) {
case 'f': // avancer
roby->bouger(AVANT);
break;
case 'b': // reculer
roby->bouger(ARRIERE);
break;
case 'l': // gauche
roby->bouger(GAUCHE);
break;
case 'r': // droite
roby->bouger(DROITE);
break;
case 's': // stop
roby->arreter();
break;
case 'm': // mode
roby->arreter(); // On s'arrête et on change de mode
roby->modeAutomatique = !roby->modeAutomatique;
break;
default: // ordre inconnu
break;
}
}
if(roby->modeAutomatique)
roby->agirAutomatiquement();
delay(15);
}
[/code]
lors de la compilation j'ai ce message d'erreur ::"servo" does not name a type j'ai peut etre oublié une acolade mai je ses pas ou !
#27983 roby de jady
Posté par jady2909 sur 20 mars 2011 - 04:02 dans Archives
#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 .
#27829 [Base Roulante] Barnabique
Posté par jady2909 sur 19 mars 2011 - 05:35 dans Robots roulants, chars à chenilles et autres machines sur roues
merci.
#27827 [Base Roulante] Barnabique
Posté par jady2909 sur 18 mars 2011 - 06:26 dans Robots roulants, chars à chenilles et autres machines sur roues
Est ce que tu va faire un tuto pour ce robot v1 et v2 ?
#27979 roby de jady
Posté par jady2909 sur 18 mars 2011 - 05:11 dans Archives
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.
#27977 roby de jady
Posté par jady2909 sur 17 mars 2011 - 07:32 dans Archives
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 .
#27972 roby de jady
Posté par jady2909 sur 16 mars 2011 - 07:12 dans Archives
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 ...
#22375 programme pour le neutre du servomoteur
Posté par jady2909 sur 12 mars 2011 - 06:15 dans Programmation
- le "- tab" me semble douteux. "-1 *" serait préférable
[/quote]
si tu peu me donner plus d'info je suis preneur merci.
#22374 programme pour le neutre du servomoteur
Posté par jady2909 sur 12 mars 2011 - 05:33 dans Programmation
#22372 programme pour le neutre du servomoteur
Posté par jady2909 sur 11 mars 2011 - 06:54 dans Programmation
#include #define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3
#define SERVOG 1
#define SERVOD 0
#define VMAX 5
Servo servog;
int getNeutral(int s)
{
if(s == SERVOG)
return 60; // valeur que je modifie a 60 il s'arrete 50: sens de l'aiguille d'une montre 70 sens contraire.
}
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);
}
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 setup()
{
servog.attach(10);
move(AVANT);
}
void loop()
{
delay(15);
}
[/code]
j'ai réussi a trouver la valeur de mon neutre en modifiant return 60>50>70
donc environ 60 pour mes deux servomoteur.En faite je souhaite faire un roby avec un capteur infrarouge uniquement mai je bloque pour le code.
Pour l'instant je m'entraine a faire fonctionner mes deux servomoteur dans le meme sens mai sans resulta je suis impeu perdu voici le code
#include #define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3
#define SERVOG 1
#define SERVOD 0
#define VMAX 5
Servo servog;
Servo servod;
int getNeutral(int s)
{
if(s == SERVOG)
return 65;
else
return 65;
}
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 setup()
{
servog.attach(10);
servod.attach(9);
move(AVANT);
}
void loop()
{
delay(15);
}
[/code] j'ai que un des deux servomoteur qui tourne ^^
Je rappel que j'ai découvert la robotique il y a que 2 mois j'ai besoin de votre aide merci.
#22370 programme pour le neutre du servomoteur
Posté par jady2909 sur 11 mars 2011 - 03:27 dans Programmation
#22366 programme pour le neutre du servomoteur
Posté par jady2909 sur 27 février 2011 - 11:58 dans Programmation
voila ce que je vais mettre comme code
2.
3.Servo servo;
4.
5.void setup()
6.{
7. servo.attach(10);
8. Serial.begin(9600);
9.}
10.
11.void loop()
12.{
13. int i = 0;
14. while(i <= 180)
15. {
16. servo.write(i);
17. Serial.println(i);
18. delay(1000);
19.
20. i = i+5;
21. }
22. while(i >= 180)
23. {
24. servo.write(i);
25. Serial.println(i);
26. delay(1000);
27. i = i-5;
28. }
29.
30. }
31. [/code]
désoler pour la balise j'arrive pas a les utiliser.
#22364 programme pour le neutre du servomoteur
Posté par jady2909 sur 27 février 2011 - 05:41 dans Programmation
1.#include
2.
3.#define SERVOG 1
4.#define SERVOD 0
5.
6.Servo servog;
7.Servo servod;
8.
9.int getNeutral(int s)
10.{
11. if(s == SERVOG)
12. return 86; //cette valeur va varier jusqu'à ce que le servomoteur va arrété
13. else
14. return 84; // pareille pour ici
15.}
mai mon code manque les fonctions setup et loop . Ne sachant pas ou les integré dans mon code je voudrai votre aide .Merci...
#31249 Modification servomoteur
Posté par jady2909 sur 27 février 2011 - 12:35 dans Electronique
je ses pas dutout ou les mettre , si vous pouvez m'aidez pour ce petit programme merci .
#31248 Modification servomoteur
Posté par jady2909 sur 27 février 2011 - 12:22 dans Electronique
1.#include
2.
3.#define SERVOG 1
4.#define SERVOD 0
5.
6.Servo servog;
7.Servo servod;
8.
9.int getNeutral(int s)
10.{
11. if(s == SERVOG)
12. return 86; //cette valeur va varier jusqu'a ce que le servomoteur va arrété
13. else
14. return 84; // pareille pour ici
15.}
#31246 Modification servomoteur
Posté par jady2909 sur 27 février 2011 - 01:44 dans Electronique
Malheureusement ce n'est pas toujours 1,5 ms car cela dépend de la qualité des résistances utilisées pour modifier le servo (ou alors je suis pas doué).[/quote]
Juste une petite question est ce que je doit prendre un rapporteur a fin de mesuré l'angle de rotation ? ainsi j'aurai la valeur du neutre des servomoteur.
#31245 Modification servomoteur
Posté par jady2909 sur 27 février 2011 - 01:16 dans Electronique
je voudrai faire un roby modifier a ma façon.
je vous tiendrai au courant consernantles servomoteur.
Pour se qui est la programation en c++ je debut est je connais les bases (un mois que je lis plusieur site que vous m'avez donner pour la programation)Sa devrai aller pour l'instant, je mettrai des photos de mon "robjady"
#31240 Modification servomoteur
Posté par jady2909 sur 23 février 2011 - 03:36 dans Electronique
- Robot Maker
- → Contenu de jady2909
- Privacy Policy