
[2WD]mon robot Jardise
#3
Posté 22 juillet 2011 - 05:56
Sympa ton robot, tu l'as acheté où ?

J'aurais préferé que tu tatonnes un peu et que tu trouves tout seul parce qu'il y a que comme ça que l'on progresse mais je vois que tu galères un peu, alors je te donnes l'info...
Bon, ton code actuel te permet de faire bouger ton servomoteur en fonction de ton capteur.
Pour faire bouger tes moteurs, tu dois définir où sont les pins où tu as connecté tes moteurs. Sur la carte Arduino Motor Shield, ce sont les pins 6,5, 7 et 4.
Pin 4 Direction Moteur 2
Pin 5 Vitesse Moteur 2
Pin 6 Vitesse Moteur 1
Pin 7 Direction Moteur 1
Défini d'abord les variables que tu utiliseras dans ton code. Au dessus de la ligne "Servo my Servo;":
int vitesse1 = 6;
int vitesse2 = 5;
int direction1 = 7;
int direction2 = 4;
Ensuite, il faut que tu crées 2 fonctions pour contrôler chacun des moteurs, indépendamment.
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);
}
}
Ensuite tu dois initialiser ta carte par le biais de la fonction Setup (tu rajoutes les instructions à ce que tu as déjà.
void setup()
{int i;
for(i=5;i<=8;i++)
pinMode(i, OUTPUT); //met les pin 4,5,6,7 en mode sortie
}
Et maintenant le programme proprement dit, c'est la fonction loop.
Là c'est pareil, tu rajoutes le code à ton code existant.
void loop()
{Moteur1(100,true);
Moteur2(100,true);
}
Et là tu fais avancer ton robot à la vitesse moyenne.
si tu met 0 au lieu de 100, le moteur n'avance pas et si tu mets 255, il va à fond
si tu met false au lieu de true, tu vas en arrière, si tu le fais que sur un seul moteur tu tournes sur toi-même.
Fais des tests en modifiant les valeurs.
Si tu veux, ensuite pouvoir commander ton robot avec ton PC, change ton programme avec celui que tu trouveras sur la page:
http://www.dfrobot.c...SKU:_DRI0001%29
Et là, je pense que tu dois y arriver tout seul.
A bientôt.
Arobose.
#6
Posté 22 juillet 2011 - 09:10
Merci arobose grasse a toi je vais pouvoir avancé sur mon robot.
Voici le résultat de mon programme.
#include <Servo.h> int vitesse1 = 6; int vitesse2 = 5; int direction1 = 7; int direction2 = 4; int capteur = 0; // broche analogique utilisé pour connecter le capteur int val; // variable pour lire la valeur de la broche analogique Servo myservo;// créer un objet de servo pour contrôler un servomoteur 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(2); // attache le servo sur la broche 2 à l'objet servo int i; for(i=4;i<=8;i++) pinMode(i, OUTPUT); //met les pin 4,5,6,7 en mode sortie } void loop() { val = analogRead(capteur); // lit la valeur du capteur (valeur comprise entre 0 et 115) 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(1000); // attend que le servo pour y arriver if (val <= 170) // si on est à moins de quelque cm d'un obstacle { Moteur1(0,true); //j’arrête le moteur 1 Moteur2(0,true); // j’arrête le moteur 2 delay(300); //j’attends quelque secondes Moteur1(255,true); //j'avance le moteur 1 a fond Moteur2(0,true); // j’arrête le moteur 2 delay(400); //j’attends quelque secondes Moteur1(255,true); //J'avance tout droit en mettant les 1 moteurs à fond Moteur2(255,false); //J'avance tout droit en mettant les 2 moteurs à fond } else { Moteur1(255,false); Moteur2(255,true); } }
#9
Posté 23 juillet 2011 - 01:33
Je te disais simplement sue Arobasse t'avait tout donné. Et qu'il ne restait plus qu'à le copier dans ton IDE. Mais il est vrait que lorsque l'on débute il n'est pas toujour évident de se rendre compte de ce qui manque ou pas.
Cdlt
Yves
#12
Posté 23 juillet 2011 - 03:15
Heureux d'avoir pu être utile. Et merci à Luj et Astondb8 pour leurs messages sympas.
Maintenant que tu as une base logicielle fonctionnelle, tu dois pouvoir progresser tranquillement, sans te presser en faisant évoluer ton robot pour qu'il soit plus performant. Par exemple, detecter où il y a un un obstacle, à gauche, à droite, devant. S'en ecarter ou devier,... Bref, tu as plein de possibilités et ça te permettra de faire d'une pierre deux coups: apprendre à coder et faire progresser ton robot.
A bientôt.
Arobose.
#13
Posté 23 juillet 2011 - 06:06
#14
Posté 23 juillet 2011 - 07:07
Bonsoir arobose oui je conte le faire évoluer est m'améliorai dans la programmation est je te remerci encore de ton aide. j'ai une question aussi cest possible de contrôler mon robot avec mon pc en gros mon pc cest la télécommande de mon robot cest possible sa???
tout est possible!
tu as une idée plus precise de ce que tu veux ? sans fil par exemple ?
si c'est le cas il existe tout un tas de module qui te permet la communiquation en µc et pc ( xbee, ir )
bonne continuation
#15
Posté 23 juillet 2011 - 07:21
Bonsoir arobose oui je compte le faire évoluer et m'améliorer dans la programmation et je te remercie encore de ton aide. j'ai une question aussi c'est possible de contrôler mon robot avec mon pc en gros mon pc c'est la télécommande de mon robot c'est possible ça???
C'est possible oui, mais pour ce faire, un minimum de connaissance en programmation est nécessaire (dans le cas de la création d'un logiciel pour contrôler le robot, à moins qu'il existe un tel programme déjà tout fait, mais si tel est le cas, inintéressant de télécharger un programme et de ne pas comprendre comment il fonctionne, sinon autant acheter un jouet

Avec en plus une méthode de communication sans fil, Xbee , Wifi ...
Et donc je te conseil, d'apprendre un peut plus sérieusement le langage utilisé par la DFRduino (même langage que les Arduino ?) et part la suite, utiliser un module de communication et la création d'un petit logiciel pour contrôler ton robot.
Imaginons que tu ai pour projet de faire cet application, juste pour contrôler le déplacement de ton robot, je pense qu'il ressemblerais à ça:
Application serveur (possible ?) sur ta DFRduino :
- Écoute sur le réseau de la communication
- Recoit un message
- Fait une action en fonction du message reçu
Application Cliente sur ton pc (Python, Java ..) :
- Se connecte à ta DFRduino
- Envoie un message
Exemple
Ton logiciel client(sur ton pc) se compose de 4 boutons de direction (haut, droit, bas, gauche).
Cas d'utilisation:
En cliquant sur le bouton flèche droite de ton logiciel, elle envoie le message 'vas à droite' à ton application serveur, qui elle, exécute l'action de faire tourner le robot vers la droite.
Idem pour les 3 autre boutons
PS: je n’ai pas encore construit mon premier robot, donc mon point de vue ne vient que de mon expérience en tant que développeur et en matière de programmation client-serveur ...
En espérant ne pas avoir parlé en chinois,
Cordialement.
#16
Posté 23 juillet 2011 - 08:03
Concernant le client serveur, il est préférable selon moi que le robot soit un client et le PC le serveur. Il a ainsi la maîtrise de son autonomie avec peu de ressources. J'ai fait un article sur le contrôle à distance et différents types de communications
#17
Posté 23 juillet 2011 - 08:23
Oui DFRduino = Arduino.
Concernant le client serveur, il est préférable selon moi que le robot soit un client et le PC le serveur. Il a ainsi la maîtrise de son autonomie avec peu de ressources. J'ai fait un article sur le contrôle à distance et différents types de communications
Un client envoi des donnée et le serveur les utilise, ce n'est pas la traduction littérale d'un modèle client serveur ?
Tu voudrai dire en gros, que le Serveur (interface PC) envoi carrément le bout de code qui fait une action et que le client exécute le bout de code ?
Aurais tu le lien de ton article ?


PS: ha tien, pas de contrôle sur la date en timestamp des citations ?
#18
Posté 23 juillet 2011 - 08:31
Un client envoi des donnée et le serveur les utilise, ce n'est pas la traduction littérale d'un modèle client serveur ?
Tu voudrai dire en gros, que le Serveur (interface PC) envoi carrément le bout de code qui fait une action et que le client exécute le bout de code ?
Aurais tu le lien de ton article ?(pas assez chercher pour avoir trouver.
)
PS: ha tien, pas de contrôle sur la date en timestamp des citations ?
tien voila un lien de pobot qui parle du code pour controlé les servo d'un robot
http://www.pobot.org...mande-pour.html
et sur pobot il plein d'autre article
avec cette article luj est passé au rangs 1 de mes heros, desolé jbot t'as etait retrogradé!

#19
Posté 23 juillet 2011 - 08:48
tien voila un lien de pobot qui parle du code pour controlé les servo d'un robot
http://www.pobot.org...mande-pour.html
et sur pobot il plein d'autre article
avec cette article luj est passé au rangs 1 de mes heros, desolé jbot t'as etait retrogradé!
Merci.
Donc au final ton application sur Arduino est dans le modèle PC(Client) - Arduino(Serveur).
Car c'est l'Arduino qui s'occupe de traiter et de transformer les informations reçues.
Et encore, dans le programme de l'article, l'Adruino ne se contente que d'afficher les informations, pas de contrôler les servomoteurs ou autres.
Enfin je suis pas un expert, ni même amateur (dans quelque jours

Question de point de vue

#20
Posté 23 juillet 2011 - 08:55
enfin pas celon mon avi l'arduino reste dependant du pc il releve et envois les info au pc qui les traites ensuite le pc lui renvoi les ordres car les programme sur arduino reste "limité" de par ça memoire enfin tout depent ce que tu veux faire bien entendumais pour moi le client doit être le pc et le serveur, l'arduino.
Question de point de vue
il y a une expression "chinoise" qui dit je site : "qui de la poule ou de l'oeuf est arrivé le premier"^^
Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users