roby capteur sharp
#1
Posté 15 juillet 2011 - 08:20
Voilà, cela fait bientôt 2 semaines que je tente de réaliser le robot roby mais je n'arrive pas à résoudre un problème.
Je suis arrivé jusqu'aux capteurs UPPD ils marchent parfaitement.
Mais la dernière étape qui consiste à utiliser un capteur IR sharp je n'y arrive pas je ne sais pas si c'est mon programme qui ne va pas ou si c'est que le capteur ne fonctionne pas (est ce que lorsque j'ai soudé les 3 fils j'ai grillé le capteur?)
voilà le bout de programme qui ne fonctionne pas (le robot recul et part à droite indéfiniment) comme s'il détectait un obstacle constemment et j'ai éssayé de changer la valeur 180 en 250 (il recule et va a droite 2 fois puis va tout le temps tout droit) et en 400 (il va tout le temps tout droit) :
void sharp()
{
int v = analogRead(4);
if (v >= 180) // si on est à moins de 10 cm d'un obstacle
{
move(ARRIERE); //on recule
delay(300);
move(DROITE); //puis on part sur la droite
delay(900);
}
else if (v >= 100) //sinon si on est à moins de 30 cm d'un obstacle
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0); // on ralentit simplement la roue droite pour engager un virage en douceur
delay(1500);
}
}
si quelqu'un voit d'ou peut provenir le problème je l'en remerci
#2
Posté 15 juillet 2011 - 08:22
Bonjour,
Voilà, cela fait bientôt 2 semaines que je tente de réaliser le robot roby mais je n'arrive pas à résoudre un problème.
Je suis arrivé jusqu'aux capteurs UPPD ils marchent parfaitement.
Mais la dernière étape qui consiste à utiliser un capteur IR sharp je n'y arrive pas je ne sais pas si c'est mon programme qui ne va pas ou si c'est que le capteur ne fonctionne pas (est ce que lorsque j'ai soudé les 3 fils j'ai grillé le capteur?)
voilà le bout de programme qui ne fonctionne pas (le robot recul et part à droite indéfiniment) comme s'il détectait un obstacle constemment et j'ai éssayé de changer la valeur 180 en 250 (il recule et va a droite 2 fois puis va tout le temps tout droit) et en 400 (il va tout le temps tout droit) :
void sharp()
{
int v = analogRead(4);
if (v >= 180) // si on est à moins de 10 cm d'un obstacle
{
move(ARRIERE); //on recule
delay(300);
move(DROITE); //puis on part sur la droite
delay(900);
}
else if (v >= 100) //sinon si on est à moins de 30 cm d'un obstacle
{
handleS(SERVOG, VMAX);
handleS(SERVOD, 0); // on ralentit simplement la roue droite pour engager un virage en douceur
delay(1500);
}
}
si quelqu'un voit d'ou peut provenir le problème je l'en remerci
Ah oui et aussi les capteur uppd ne fonctionne plus quand je rajoute ce programme
#3
Posté 15 juillet 2011 - 09:11
Pour cela tu fait un tableau des valeurs de v que tu affiche graphiquement (c'est assez simple en processing à faire) et tu met une feuille en papier devant le capteur que tu fais bouger pour voir si le capteur réagit bien.
#4
Posté 15 juillet 2011 - 09:34
Comment faire pour visualiser les valeurs en processing peux tu me détailler comment procéder ou alors me donner un liens ou ils l'expliquent.
merci
#5
Posté 15 juillet 2011 - 09:59
utilise le programme suivant:
const int Voie_0=0; int mesure_brute=0; void setup() { Serial.begin(115200); } void loop(){ mesure_brute=analogRead(Voie_0); Serial.println(mesure_brute); delay(100); }
et ouvre le serial monitor (le bouton le + à doite du logiciel arduino), règles sur 115200
branches ton sharp sur la voie A0 (en l'alimentant comme il faut évidemment)
#6
Posté 16 juillet 2011 - 01:39
pas besoin d'utiliser processing.
utilise le programme suivant:const int Voie_0=0; int mesure_brute=0; void setup() { Serial.begin(115200); } void loop(){ mesure_brute=analogRead(Voie_0); Serial.println(mesure_brute); delay(100); }
et ouvre le serial monitor (le bouton le + à doite du logiciel arduino), règles sur 115200
branches ton sharp sur la voie A0 (en l'alimentant comme il faut évidemment)
J'ai brancher mon sharp sur gnd 5v et A0
après je compile et envoie le code dans mon arduino
puis j'ouvre le serial monitor et voilà ce que j'obtiens:
ýþþÿýúúýÿýúÿþúÿýÿýþøþýüúúýüüúýÿýýúýÿþûøøüÿúýüüûÿþþþüýüüüüþÿÿýüÿýÿøúúúû
Voilà je n'y arrive pas le seul point positif c'est que lorsque je met 1 doigt devant le capteur il apparait un ø
Pouvez vous m'expliquer plus en détail s'il vous plaît?
merci beaucoup
#7
Posté 16 juillet 2011 - 01:50
ainsi tu devrai recevoir des valeurs entre 0 et 1023, avec un passage à la ligne entre chaque.
#8
Posté 16 juillet 2011 - 04:11
il faut régler la vitesse du serial monitor égale à celle du sketch (en bas à droite du serial monitor) : ici on a 115200 (l'instruction serial.begin(115200); )
ainsi tu devrai recevoir des valeurs entre 0 et 1023, avec un passage à la ligne entre chaque.
ok merci ton programme a parfaitement marché même si mon erreur ne venait pas d'un capteur défectueux, je n'étais pas connecté sur une entrée analogique et c'est ton A0 qui m'a éclairé. merci
Par contre, j'ai essayé de faire quelques tests avec ton programme et je trouve des valeurs différentes du tuto roby pour des distances de 10 cm ou autre est ce normal étant donné que c'est le même capteur?
De plus, mon robot détecte les objet 1 fois sur 2 et des fois au dernier moment voir même après avoir tapé un mur...est ce du à la qualité des capteurs?
Enfin, j'aimerai savoir comment tu as eu l'idée de tester ce programme ? as tu un livre ou une méthode à suivre pour débutant ?
merci pour ton aide
#9
Posté 17 juillet 2011 - 12:03
Normalement si tu as le même capteur tu devrais avoir les mêmes valeurs (avec une petite tolérance)
L'autre souci c'est le temps de réaction? cela ne vient peut être pas de la vitesse du capteur, mais de la vitesse (ici on dirait fréquence) à laquelle le programme lit le capteur. De plus certains obstacles aux formes ou couleurs particuliers peuvent causer des soucis.
Et pour l'idée de tester le programme, il faut le plus souvent repartir au basique: tester chacun de ses sous programmes séparément. Dans l'idéal tu aurais tout d'abord utilisé un voltmètre pour vérifier le capteur. Mais bon si cela fonctionne pas de soucis!
Au niveau du robot qui se prend les murs: si tu le fais avancer moins vite, il aura peut être plus le "temps" de voir les obstacles?
0 utilisateur(s) li(sen)t ce sujet
0 members, 0 guests, 0 anonymous users