Aller au contenu


Photo
- - - - -

roby capteur sharp


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

#1 mopi

mopi

    Membre

  • Membres
  • 18 messages

Posté 15 juillet 2011 - 08:20

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

#2 mopi

mopi

    Membre

  • Membres
  • 18 messages

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 zeqL

zeqL

    Membre passionné

  • Membres
  • PipPipPip
  • 393 messages
  • Gender:Male

Posté 15 juillet 2011 - 09:11

Vérifie les valeurs que tu reçois de ton capteurs.

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 mopi

mopi

    Membre

  • Membres
  • 18 messages

Posté 15 juillet 2011 - 09:34

merci pour cette réponse rapide
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 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 15 juillet 2011 - 09:59

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)

#6 mopi

mopi

    Membre

  • Membres
  • 18 messages

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 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 16 juillet 2011 - 01:50

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.

#8 mopi

mopi

    Membre

  • Membres
  • 18 messages

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 Hexa Emails

Hexa Emails

    Membre passionné

  • Membres
  • PipPipPip
  • 439 messages
  • Gender:Male

Posté 17 juillet 2011 - 12:03

Heu tout d'abord je ne connais pas le tuto de roby par coeur, il faut donc vérifier sur le code en question quelle entrée analogique est utilisée (de A0 à A5, ou de 14 à 20: c'est la même chose)

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