Mon premier robot à deux roues
#82
Posté 20 juin 2012 - 10:28
dsl de mon absence sur mon sujet pour vous reconpencer ( ) :
[...]
qu'en pensez vous?
Pas besoin de nous récompenser !
Sinon, c'est sympa ce que tu as fait. T'as fait ça avec quel logiciel ?
Par contre, la roue folle ne me semble pas assez grande et j'ai l'impression que c'est la chassi arrière qui va toucher le sol... Je me trompe peut-être
++
Black Templar
Mon site internet : http://ferdinandpiette.com/
#84
Posté 20 juin 2012 - 10:37
pour les roue je compte les laissé comme ceci,pour la roue folle je vais la surélever au besoin (un grand merci a black templar sans lequelle j'aurai fait une belle conner**)Google Sketchup, ça se voit tout de suite
Sinon moi j'aurais centré les roues.
et pout le logiciel c'est évidament google sketchup (j'essaye blender mais je n'y arrive pas!!)
cordialement
rbot99
#85
Posté 21 juin 2012 - 06:10
et pout le logiciel c'est évidament google sketchup (j'essaye blender mais je n'y arrive pas!!)
Sinon, tu as solidworks, mais ce n'est pas un logiciel gratuit...
Mon site internet : http://ferdinandpiette.com/
#88
Posté 21 juin 2012 - 06:24
J'aime ce logiciel Sauf quand il plante...
Sinon il y a des versions étudiantes (si l'école a plus d'un certain nombre de licence).
toi aussi tu as eu le fameux crash en plein TP, celui qui t'oblige à tout recommencer en un minimum de temps alors que t'avais enfin réussi?
#89
Posté 21 juin 2012 - 07:13
Oulah alors là j'en ai des pas mal à raconter... Dont les 3 annulés qui ont planter solidworks supprimant toutes mes avancées... Et surtout sur le modèle numérique du PPE : pièces qui changent de taille (des vis faites avec la toolbox), des contraintes qui disparaissent, des côtes qui étaient complètement fausses, des cercles non coaxiaux alors qu'ils étaient côtés de la même manière... Et encore j'en passe !toi aussi tu as eu le fameux crash en plein TP, celui qui t'oblige à tout recommencer en un minimum de temps alors que t'avais enfin réussi?
Mais bon, grâce à ce logiciel on apprend à sauvegarder à chaque changement (c'est à dire toutes les 10s environ) xD
#90
Posté 23 juin 2012 - 11:03
voici mon code!!!!!!
#include <Servo.h> #include <Ultrasonic.h> #define TRIGGER_PIN 12 #define ECHO_PIN 13 Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN); #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 UPDDA 10 #define VMAX 5 Servo servog; Servo servod; int vLdr = 5; int getNeutral(int s) { if(s == SERVOG) return 86; else return 84; } 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() { pinMode(UPDDG, INPUT); pinMode(UPDDD, INPUT); pinMode(UPDDA, INPUT); Serial.begin(9600); servog.attach(10); servod.attach(9); move(AVANT); } void loop() { float cmMsec, inMsec; long microsec = ultrasonic.timing(); cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); Serial.print("MS: "); Serial.print(microsec); Serial.print(", CM: "); Serial.print(cmMsec); Serial.print(", IN: "); Serial.println(inMsec); delay(1000); if(microsec <= 360) { handleS(SERVOG, 0); handleS(SERVOD, VMAX); delay(1500); }else { handleS(SERVOG, VMAX); handleS(SERVOD, VMAX); } if(UPDDD, LOW) { move(ARRIERE); delay(300); move(DROITE); delay(900); }else if(UPDDA, LOW) { handleS(SERVOG, 0); handleS(SERVOD, VMAX); } else { handleS(SERVOG, VMAX); handleS(SERVOD, VMAX); } if(UPDDG, LOW) { move(ARRIERE); delay(300); move(GAUCHE); delay(900); } else if(UPDDA, LOW) { handleS(SERVOG, 0); handleS(SERVOD, VMAX); } else { handleS(SERVOG, VMAX); handleS(SERVOD, VMAX); } }et voila!!
#93
Posté 24 juin 2012 - 01:03
#include <Servo.h> #include <Ultrasonic.h> #define TRIGGER_PIN 12 #define ECHO_PIN 13 Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN); #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 UPDDA 10 #define VMAX 5 Servo servog; Servo servod; int vLdr = 5; int getNeutral(int s) { if(s == SERVOG) return 86; else return 84; } 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() { pinMode(UPDDG, INPUT); pinMode(UPDDD, INPUT); pinMode(UPDDA, INPUT); Serial.begin(9600); servog.attach(10); servod.attach(9); move(AVANT); } void loop() { float cmMsec, inMsec; long microsec = ultrasonic.timing(); cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM); inMsec = ultrasonic.convert(microsec, Ultrasonic::IN); Serial.print("MS: "); Serial.print(microsec); Serial.print(", CM: "); Serial.print(cmMsec); Serial.print(", IN: "); Serial.println(inMsec); delay(1000); if(microsec <= 360) { handleS(SERVOG, 0); handleS(SERVOD, VMAX); delay(1500); }else { handleS(SERVOG, VMAX); handleS(SERVOD, VMAX); } if(UPDDD, HIGH) { move(ARRIERE); delay(300); move(DROITE); delay(900); }else if(UPDDA, HIGH) { handleS(SERVOG, 0); handleS(SERVOD, VMAX); } else { handleS(SERVOG, VMAX); handleS(SERVOD, VMAX); } if(UPDDG, HIGH) { move(ARRIERE); delay(300); move(GAUCHE); delay(900); } else if(UPDDA, HIGH) { handleS(SERVOG, 0); handleS(SERVOD, VMAX); } else { handleS(SERVOG, VMAX); handleS(SERVOD, VMAX); } }
#95
Posté 24 juin 2012 - 03:09
... et il restera apparemment encore un souci que je n'ai pas encore trouvé.long microsec = ultrasonic.Timing();
Serial.print("MS: ");
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(ultrasonic.Ranging(CM));
Serial.print(", IN: ");
Serial.println(ultrasonic.Ranging(INC));
delay(1000);
(j'espère qu'on a bien la même version de la lib ultrasonic).
#96
Posté 24 juin 2012 - 03:11
Je crois que tu devrais déjà remplacer les lignes correspondantes par ça :
... et il restera apparemment encore un souci que je n'ai pas encore trouvé.
(j'espère qu'on a bien la même version de la lib ultrasonic).
comme disait Jbot, le souci est dans le if...
Indice supplémentaire en général dans un if, il faut un opérateur
#100
Posté 24 juin 2012 - 06:17
merci de vos réponses,j'ai peut être trouvé le probleme:Ce n'est pas parce qu'un code compile qu'il fonctionne, loiiiiiinnnnnnnn de la !
else if(UPDDD==HIGH)
j'ai trouvé??ou pas?
cordialement
rbot99
Répondre à ce sujet
1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users