Planete Sciences

forums de Planete Sciences
It is currently Sat 25 May 2013, 01:55

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next
Author Message
PostPosted: Sat 06 Mar 2010, 21:04 
Offline
PMI
User avatar

Joined: Sun 04 Dec 2005, 13:32
Posts: 2017
Location: Grenoble
Non en fait c'est mon brouteur internet qui a mis des guillemets bizarres "pour faire joli".
C'est corrigé:

Code:
#include "asuro.h"
int main(void)
{
    Init ();
    for(;;) {
      unsigned char c;
      c = PollSwitch();
      if (c)
          StatusLED(GREEN);
      else
          StatusLED(OFF);

     BackLED((c & 0x7) ? ON : OFF, (c & 0x38) ? ON : OFF);
    }

    /* jamais atteint */
    return 0;
}


_________________
Jeune vieux croulant - Moi - I-Grebot - (nos vidéos)


Top
 Profile  
 
PostPosted: Sun 07 Mar 2010, 01:37 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Oui c'est peut être sa mais le truc c'est que dans le manuel du robot il écrive a chaque fois comme cela ,donc apres peut être se sont t'il tromper? J'essairai merci!


Top
 Profile  
 
PostPosted: Sun 07 Mar 2010, 02:01 
Offline
PMI
User avatar

Joined: Sun 04 Dec 2005, 13:32
Posts: 2017
Location: Grenoble
Ce que je veux dire c'est que mon firefox a remplacé

Code:
#include "asuro.h"

qui est correct,


par
Code:
#include “asuro.h”

qui est incorrect.


Différence subtile...

_________________
Jeune vieux croulant - Moi - I-Grebot - (nos vidéos)


Top
 Profile  
 
PostPosted: Sun 07 Mar 2010, 10:01 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Non j'ai essayer c'est pas sa le probleme et le programme ne marche toujours pas ,aucune réaction du robot !!


Top
 Profile  
 
PostPosted: Sun 07 Mar 2010, 15:49 
Offline
PMI
User avatar

Joined: Sun 04 Dec 2005, 13:32
Posts: 2017
Location: Grenoble
T'as essayé le programme d'auto-test qui est fourni avec le robot ?

_________________
Jeune vieux croulant - Moi - I-Grebot - (nos vidéos)


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 09:43 
Offline

Joined: Thu 06 Sep 2007, 10:39
Posts: 93
Location: retourne toi je suis là
Et un truc comme ca ?

Code:
#include "asuro.h"
int main(void)
{
unsigned char detect;
   
Init ();

while(1)
{     
      detect = PollSwitch();
      if (detect > 0)
     {
            BackLED(ON,OFF);
      }
      else
     {
            BackLED(OFF,ON);
      }
 }

return 0;
}



1) 1 led sur les 2 s'allument?
2) Quand tu appuies sur un des switch est-ce que l'autre led s'allume et l'autre s'éteint ?
Aprés ce sont des switch donc il faut laisser appuyer un peu sur les switch le temps que la fonction Pollswitch acquiert la bonne valeur

_________________
L'asservissement c'est simple comme un PI


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 10:08 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Salut , le self test je l'ai fait et tout réagit bien et la le teste que tu m'as fournit sa marche impec , les leds s'allume pour chaque switch , donc sa veut dire que tout marche impec mais je crois que mon probleme c'est le programme.... et c'est bizarre que le premier code que tu m'ai fournis pour les moteurs ne marche pas!
yanouriou


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 10:15 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Bon j'ai fait un petit experimentation avec le derniere code que dagguy viens de me donner et voilà comment je l'ai modifié:
Code:
#include "asuro.h"
int main(void)
{
unsigned char detect;
   
Init ();

while(1)
{     
      detect = PollSwitch();
      if (detect > 0)
     {
        MotorSpeed (0,0);
      }
      else
     {
        MotorDir (FWD,FWD);
      MotorSpeed (150,150);
      }
}

return 0;
}



et sa marche quand j'appuie les moteur s'arrête donc merci beaucoups de m'avoir aidé mais j'ai encore juste une tout derniere question : pourquoi les autres programmes (les votres et les miens ) non pas marché auparavant ? c'est la position de la boucle ? (debut par rapport a avant ou elle était a la fin ?) Voilà ce sera la derniere choses que j'aurais a demander , merci d'y avoir consacré autant de temps !

yanouriou


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 11:06 
Offline

Joined: Thu 06 Sep 2007, 10:39
Posts: 93
Location: retourne toi je suis là
Il faut savoir que la fonction PollSwitch() ne retourne pas un booléen mais un entier qui permet de savoir quel switch a été appuyé.
De plus il y a priori des antirebonds sur les switch donc faut bien penser à appeler de nombreuses fois la fonction pollswitch pour être sûr que le condensateur s'est bien déchargé (normalement c'est marqué dans le manuel)

http://issuu.com/mikefr/docs/manuel_asuro_fr

_________________
L'asservissement c'est simple comme un PI


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 11:49 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Oué je l'ai le manuel mais justement c'était pas très clair mais alors finalement c'est quoi c'est le fait que la boucle "while(1) " soit au début que sa marche ce coups-ci?


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 15:28 
Offline

Joined: Thu 06 Sep 2007, 10:39
Posts: 93
Location: retourne toi je suis là
il faut comprendre que while(1); boucle sur lui même, une fois que le programme est dans cette boucle il ne fait plus rien
Maintenant si tu fait:
while(1)
{
test;
}
Alors le test va être exécuter en boucle.

Récapitulons:
test;
while(1);
=> le test n'est exécuté qu'une seule fois et ensuite le programme va rester sur l'instruction while en bouclant et ne va rien faire d'autre

while(1) {test;}
=> le test est exécuté en boucle

_________________
L'asservissement c'est simple comme un PI


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 17:39 
ok merci , donc il faut utiliser pollswitch() dans une boucle ! J'y penserai ,merci beaucoups


Top
  
 
PostPosted: Mon 08 Mar 2010, 21:04 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Dis moi tu a l'air d'être assez calé en programmation robotique donc je me permet de te poser une autre question , je n'arrive pas à comprendre comment faire fonctionner l'odometrie sur l'asuro , il est ecris sur le manuel
Quote:
Afin d’éviter tout malentendu: OdometrieData() ne lit pas directement le nombre de tours mais
seulement la luminosité actuelle du disque de la barrière lumineuse. Il appartient au programmeur
d’interpréter les valeurs de luminosité, le comptage des passages clair-foncé et la détermination
du nombre de tours de la roue!
et j'arrive pas trop à comprendre comment on peut traduire sa en distance ....


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 21:45 
Offline

Joined: Sun 12 May 2002, 00:08
Posts: 52
Location: Côte d'Azur
yanouriou wrote:
j'arrive pas trop à comprendre comment on peut traduire sa en distance ....

Tu sais que tes moteurs vont vers l'avant. Tu comptes le nombre de passages du blanc au noir et réciproquement.

Si par exemple tu as compté 2 passages blanc -> noir et 2 passages noir -> blanc, tu en déduis que la roue a fait exactement un tour. (si c'est tu as mis l'autocollant 4 secteurs, évidemment; pour le 6 c'est 3 passages de chaque, pour le 8 c'est 4, etc)

La difficulté est juste de différencier le blanc du noir de manière fiable.


Top
 Profile  
 
PostPosted: Mon 08 Mar 2010, 21:51 
Offline
User avatar

Joined: Thu 29 May 2008, 10:15
Posts: 12
Location: Côte d'azur
J'ai aussi un petit asuro à la maison mais pour le moment je n'ai pas eu le temps de lui faire l'odométrie, je ne peux donc pas te passer de programme.
Par contre j'ai trouvé un site d'étudiants canadiens qui en parlent qui pourrait t'aider:
http://maths-forum.com/showthread.php?t ... ge=1&pp=10

_________________
Gaëlle, ange gardien


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 52 posts ]  Go to page Previous  1, 2, 3, 4  Next

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You can post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group