Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Programmation capteur d'obstacle



  1. #1
    nasef

    Programmation capteur d'obstacle

    Bonjours, alors voilà depuis un moment je travaille sur un robot qui permet la surveillance d'un lieu.
    Nous l'étudions en cours et je fais face à un problème. Je suis sensé programmer le robot grâce à ces
    4 capteurs d'obstacle, le but et tant qu'il retourne jusqu’à sa base afin qu'il puisse recharger, donc pour cela J’ai créé une carte avec des leds a émission infrarouge, j'ai programmé de façon à ce que lorsque le robot détecte le moindre rayonnement infrarouge
    il se dirige vers celle-ci, sauf qu'il ne s'arrête jamais. J'ai donc essayé toute les solutions possible et inimaginable mais je n'arrive vraiment pas. Le capteur d'obstacle détecte une valeur entre 1 et 255, le problème et que quand je dis au capteur d'obstacle, si capteur d'obstacle>10 alors avancer, je n'arrive pas à lui dire si tu es a 235 alors arrête toi. J'ai pensais a créé deux variable différente dont celle-ci sont égal a la valeur que le capteur renvoi, donc j'utilise une variable pour le faire avancer jusqu'à la base, et une autre afin de le faire arrêter sachant que c'est deux variable renvoir toute les deux les valeur que des capteur, mais même comme cela je ne comprends pas pourquoi ça ne marche pas. J'ai vraiment besoin d'aide je passe un examen de bac et je dois présenter cela, si quelqu’un pouvais m'aider je lui serais vraiment reconnaissant.

    -----


  2. Publicité
  3. #2
    umfred

    Re : Programmation capteur d'obstacle

    le bout de code de cette fonction et de la façon dont est mesuré "capteur d'obstacle" pourrait aider à trouver ton problème (avec éventuellement le nom du compilateur , etc etc).
    Parce que là, je ne vois pas trop le problème:
    tu dois avoir une boucle dans laquelle tu fais ta mesure et en sortie tu testes cette valeur et tu agis en conséquence.
    ça pourrait donner un truc du genre:
    Code:
    while(1)
    {
    ....
    capture_obstacle=mesure();
    if(capture_obstacle < 10)
    {
    // on fait rien 
    }
    if(capture_obstacle >= 10 & capture obstacle < 235)
    {
    //le robot avance
    }
    if(capture_obstacle >= 235)
    {
    //on arrête le robot
    }
    ...
    }

  4. #3
    nasef

    Re : Programmation capteur d'obstacle

    Merci pour ta réponses, en faite j'ai déjà testé cette solution mais d'une façon différente, et ça n'avait pas marché mais je comprends mon erreur maintenant, mais j'aimerai savoir si sa reviens a la même chose si je dis
    while(1)
    {
    if(10<capteur d'obstacle<235)
    {
    // Avancer ;
    }
    else if(capteur d'obstacle>235)
    {
    Arrêt ;
    }
    }
    J'avais une autre question lorsque tu me dis capteur d’obstacle=mesure, mesure est une variable ou bien c'est juste pour me dire que l'on veut faire un test de mesure. Parce que si c une variable je ne vois pas elle sert à quoi. En tous cas merci de m’aider c’est vraiment gentille.

  5. #4
    Jack

    Re : Programmation capteur d'obstacle

    @nir92


    Merci de lire et respecter les règles participatives de ce forum à l'avenir !

    http://forums.futura-sciences.com/pr...eau-forum.html

  6. #5
    umfred

    Re : Programmation capteur d'obstacle

    Citation Envoyé par nasef Voir le message
    if(10<capteur d'obstacle<235)
    ce genre de test va faire une erreur de compilation à mon avis
    mais la structure en if .. else if .. marche aussi

    J'avais une autre question lorsque tu me dis capteur d’obstacle=mesure, mesure est une variable ou bien c'est juste pour me dire que l'on veut faire un test de mesure. Parce que si c une variable je ne vois pas elle sert à quoi.
    Si tu relis j'ai marquer capteur_obstacle=mesure();. donc les parenthèses indique que mesure() est une fonction, et cette fonction dans mon exemple sert à lire la valeur du convertisseur analogique/numérique provenant de ton capteur d'obstacle.

  7. A voir en vidéo sur Futura
  8. #6
    nasef

    Re : Programmation capteur d'obstacle

    Merci umfred, j’ai très bien compris ce que tu m’as dit, mais en faite pour la ligne de code
    Capteur_d’obstale= mesure, je crois pas que cela soit nécessaire parce que j’ai déjà des fonction prédéfini qui me permette de renvoyer la valeur que le convertisseur analogique numérique donne, en réalité j’ai 4 capteur, à l’avant, c’est 4 capteur ont pour fonction
    SEN_OBS_ANALOG(OBS_SIDE_L), ce qui correspond à capteur gauche
    SEN_OBS_ANALOG(OBS_CENTER_L), ce qui correspond à capteur centre gauche
    SEN_OBS_ANALOG (OBS_SIDE_R), capteur droit
    SEN_OBS_ANALOG(OBS_CENTER_R), capteur centre droit. Donc lorsque je dis par exemple
    if(SEN_OBS_ANALOG(OBS_SIDE_L)> 10)
    {
    MOT_STR(100,FWD,DISTANCE,150); // correspond à la fonction avancer.
    }
    Mon robot comprend très bien est dès qu’il capte un rayonnement supérieure a 10 il avance, donc si je comprends bien une mesure est bien faite au niveau de la sortit du convertisseur.
    Par rapport la ligne de code if(10<SEN_OBS_ANALOG(OBS_SIDE_ L)<235), je les compiler, et il n’y a pas de souci, donc peut être que le robot ne comprendra pas ce que cela veux dire, mais au pire des cas je prends la ligne de code que tu ma donnée. En tout cas merci beaucoup pour ton aide et tien moi au courant par rapport à la ligne de code capteur d’obstacle = mesure() ; .

  9. Publicité
  10. #7
    umfred

    Re : Programmation capteur d'obstacle

    c'était un exemple d'ordre général

    mais pour ton robot, j'espere que tu as pris en considération tes 4 capteurs pour le faire ou avancer ou reculer ou tourner ou arrêter.

  11. #8
    Xoxopixo

    Re : Programmation capteur d'obstacle

    Bonjour,

    Citation Envoyé par Nasef
    if(10<SEN_OBS_ANALOG(OBS_SIDE_ L)<235),
    Selon le compilateur, ce type de code peut être compilé, mais ne donnera probablement pas le résultat attendu. (soit la vérification que la valeur variable soit compris entre 10 et 235)

    Il s'agit ici d'une expression logique.

    Donc si le compilateur commence l'évaluation de l'expression à gauche, il va faire le premier test :
    10<SEN_OBS_ANALOG(OBS_SIDE_L)
    Ce qui va donner le résultat 0 ou 1 (valeurs de faux ou vrai)
    Ensuite cette valeur va être testée avec 235 soit :
    0<235 ou 1<235
    Le résultat final sera donc toujours égal à 1 (vrai).

    Si le compilateur commence l'évaluation de l'expression à droite :
    Le premier test sera SEN_OBS_ANALOG(OBS_SIDE_L)<235
    Ce qui va donner le résultat 0 ou 1 (valeurs de faux ou vrai)
    Ensuite cette valeur va être testée avec 10 soit :
    10<0 ou 10<1
    Le résultat final sera donc toujours égal à 0 (faux).
    En bon vivant, rien ne vaut un bonne logique ternaire.

  12. #9
    nasef

    Re : Programmation capteur d'obstacle

    Ha, merci je comprends, parce que maintenant que j’y pense j'avais déjà essayé cette solution mais elle ne marche pas. Donc je vais essayer ta solution. Apres par rapport à mon programme il marche très bien, il arrive jusqu'à la base, c'est juste qu'il ne s'arrête pas. En tout cas merci mon ton aide précieuse, je te tiens au courant si j'ai problème.

  13. #10
    nasef

    Re : Programmation capteur d'obstacle

    Bonjours, je me permets de vous recontacter parce que j'ai modifié le programme comme vous m'aviez dit, c'est à dire avec
    Capteur d'obstacle>10 & capteur d'obstacle < 235 mais lorsque mon robot arrive à proximité de la base, il ne veut pas s'arrêter il avance tous droit. En réalité nous sommes plusieurs à travailler sur cela et somme même pas foutu de y arriver ^^. Je vous mets donc le programme que J’ai réalisé afin que peux afin que si vous le voulais bien, essayer de m’aider. Merci à vous.
    /*** Le code exécutable commence ici ***/
    void main()
    {

    SEN_CONFIG();
    MOT_CONFIG();
    LED_TOP_RED_OFF();
    LED_TOP_GREEN_ON();


    while(1)
    {

    if((SEN_OBS_ANALOG(OBS_SIDE_L) >10)&(SEN_OBS_ANALOG(OBS_SIDE_ L)<235)|(SEN_OBS_ANALOG(OBS_CE NTER_L)>10)&(SEN_OBS_ANALOG(OB S_CENTER_L)<235))

    {
    MOT_ROT(100,FWD,WHEEL,LEFT,ANG LE,4); // TOURNE A GAUCHE DE 10° A VITESE 100%

    while(!MOT_END){};

    MOT_STR(100,FWD,DISTANCE,150);// avancé a une vitesse de 100% DEVANT AVEC DISTANCE DE 15 CM.

    while(!MOT_END){}; // ARRET DU ROBOT

    }




    while((SEN_OBS_ANALOG(OBS_SIDE _R)>10)&(SEN_OBS_ANALOG(OBS_SI DE_R)<235)|(SEN_OBS_ANALOG(OBS _CENTER_R)>10)&(SEN_OBS_ANALOG (OBS_CENTER_R)<235)) // side R = droite, side L = gauche
    {


    MOT_ROT(100,FWD,WHEEL,RIGHT,AN GLE,4);

    while(!MOT_END){};

    MOT_STR(100,FWD,DISTANCE,150);

    while(!MOT_END){};

    }


    if(SEN_OBS_ANALOG(OBS_SIDE_R)> 235)

    {

    while(!MOT_END){};
    }



    if(SEN_OBS_ANALOG(OBS_CENTER_R )>235)

    {

    while(!MOT_END){};
    }


    if(SEN_OBS_ANALOG(OBS_CENTER_L )>235)

    {

    while(!MOT_END){};
    }




    if(SEN_OBS_ANALOG(OBS_SIDE_L)> 235)

    {

    while(!MOT_END){};
    }


    }

Sur le même thème :

Discussions similaires

  1. Programmation d'un capteur ultrasonique (SRF05)
    Par TS.SI dans le forum Électronique
    Réponses: 0
    Dernier message: 23/03/2012, 08h46
  2. Capteur infrarouge nourriture Programmation
    Par flo5957 dans le forum Électronique
    Réponses: 5
    Dernier message: 07/01/2011, 19h22
  3. détecteur d'obstacle ir
    Par AK68 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/09/2010, 17h29
  4. ppe capteur d'obstacle
    Par monjis dans le forum Électronique
    Réponses: 1
    Dernier message: 19/02/2009, 14h00
  5. Capteur d'obstacle IR avec PIC
    Par mick57 dans le forum Électronique
    Réponses: 2
    Dernier message: 05/02/2009, 13h25