Planete Sciences

forums de Planete Sciences
It is currently Mon 20 May 2013, 18:20

All times are UTC + 1 hour [ DST ]




Post new topic Reply to topic  [ 52 posts ]  Go to page 1, 2, 3, 4  Next
Author Message
PostPosted: Sun 28 Feb 2010, 15:38 
Bonjour, je suis une personne passionnée de bricolage et d'invention ,j'ai acheté ce robot en me disant que ce serai super pour m'initier à l'électronique et tout ce qui s'y rapport (moteur,capteurs ...etc) or je me suis heurté au langage C que je n'arrive pas à manipuler , j'arrive à faire des programmes simple juste ne mettant :
MotorDir (FWD,FWD)
MotorSpeed (255,255)

Mais je n'arrive pas a mettre des fonctions, je n'arrive pas à comprendre comment cela marche , le manuel n'étant pas assez clair sur ce sujet ,je me suis penchant sur le sujet en allant sur internet et en cherchant des tutoriaux sur le langage C or ceux-ci sont trop poussé et conviennent pas à asuro et à la manière de programmer ,j'aimerais vraiment de l'aide car depuis un mois il reste dans le placard car je n'y arrive pas....
Merci d'avance à ceux qui prendrons le temps de lire et de répondre.

Dark


Top
  
 
PostPosted: Sun 28 Feb 2010, 22:26 
Offline

Joined: Mon 27 Aug 2007, 18:05
Posts: 358
Location: Suisse
Personellement, je te conseille le tutoriel du site du zéro (http://www.siteduzero.com/tutoriel-3-14 ... -en-c.html).
Tu vas devoir apprendre une bonne partie du langage avant de commencer les fonctions, mais ca te sera forcément utile un jour ou l'autre (seul la partie 1 et jusqu'au 2.6 est utile pour la robotique, le reste concerne la prog sur ordinateur de bureau).

_________________
Code source de notre robot


Top
 Profile  
 
PostPosted: Wed 03 Mar 2010, 20:55 
Merci beaucoup de ta réponse si rapide ,j'ai suivi tes conseils et je commence a y voir un peu plus clair mais j'ai une question, j'ai fait un programme avec ce que j'ai appris en C et sa ne marche pas ,une chose cloche mais je n'arrive pas a savoir quoi et la fracture entre le robot et le C (version ordinateur ) est un peu "brutale" , voila mon code :
Quote:
#include "asuro.h"

int main()

{

Init();
int attendre=0;
unsigned char taste ;
StatusLED (RED);
do
{
attendre++;
void BackLED (ON,OFF);
void BackLED (OFF,ON);
}while (attendre < 5);
if (attendre=10)
{
void BackLED (0,0);
void StatusLED (GREEN);
void SerWrite ("Go",2);
void MotorDir (FWD,FWD);
void MotorSpeed (240,240);
}
else if (taste>0)
{
void StatusLED (RED);
void BackLED (ON,ON);
void MotorDir (BREAK,BREAK);
void MotorSpeed (0,0);
}

while(1);
return 0;
}


Merci d'avance !
Dark


Top
  
 
PostPosted: Thu 04 Mar 2010, 00:03 
Offline

Joined: Mon 27 Aug 2007, 18:05
Posts: 358
Location: Suisse
Code:
if (attendre=10)

est un code d'affectation (tu mets 10 dans attendre), ça devrait être :
Code:
if (attendre==10)
, qui est un code de comparaison.
Pour éviter ce genre d'erreur, je te conseille d'écrire
Code:
if (10 == attendre)
, tu auras une erreur si tu mets qu'un seul "=". Sinon, le compilateur peut te sortir des warnings, à voir.

A+
Antoine

_________________
Code source de notre robot


Top
 Profile  
 
PostPosted: Thu 04 Mar 2010, 15:41 
Offline

Joined: Thu 06 Sep 2007, 10:39
Posts: 92
Location: retourne toi je suis là
En sortant de ton while, attendre vaudra 5 donc passera jamais dans ton if(attendre == 10)
la variable taste n'est pas initialisée donc on ne sait pas si ca passera par la condition taste > 0
Et ton programme arrive au while(1) qui va boucler sur lui même

_________________
L'asservissement c'est simple comme un PI


Top
 Profile  
 
PostPosted: Thu 04 Mar 2010, 20:33 
Merci beaucoups de vos réponse , pour le taste et pour le 5 c'est juste des oublis quand j'ai posté puis remanié le code mais merci quand même , et pour "==" je l'avais pas vue et en lisant le cour de C , y avait marqué que les débutant faisaient ce genre d'erreur et en rigolant je me suis dit que je ne ferai jamais ce genre d'erreur mais merci de l'avoir remarqué !
bye
Dark


Top
  
 
PostPosted: Thu 04 Mar 2010, 22:16 
C'est encore moi le boulet de service , je n'arrive pas à faire un programme pourtant simple , j'aimerai jsute qu'il avance et puis que quand un capteur est appuyé il s'arrête , mais même avec ce programme là ça ne marche pas....
HELP :lol:
Quote:
#include “asuro.h”
int main(void)
{
Init ();

MotorDir(FWD,FWD);

MotorSpeed(120,120);

StatusLED(GREEN);
BackLED(OFF,OFF);

while (PollSwitch()==0)
{
StatusLED (YELLOW);
}
if (PollSwitch()==0)
{
MotorSpeed (0,0);
StatusLED (RED);
BackLED (ON,ON);
}


while (1)
return 0;


Top
  
 
PostPosted: Fri 05 Mar 2010, 23:31 
Salut c'est darkzz , s'il vous plait je vous en supplie aidez moi j'en peu plus sa fait longtemps que j'ai acheté ce robot et j'arrive toujours pas à le programmer et sa me soule , sa me soule d'avoir acheté un robot et de pas arriver à m'en servir , même les cours de C n'ont rien fait ,parce que la documentation du robot est imcomplète et justement le lien entre C et robotique est difficile , je veux juste que l'on me dise comment au moins faire un programme simple pour que le robot avance puis qu'il s'arrête quand un des capteur est touché ,j'ai essayé des dizaines de codes toutes la journée sans que sa marche et j'en ai vraiment ras-le-bol je vous remercie d'avance de m'aider parce que là je sais plus quoi faire!
darkzz (nouvellement yanouriou)


Top
  
 
PostPosted: Fri 05 Mar 2010, 23:34 
Offline
PMI
User avatar

Joined: Sun 04 Dec 2005, 13:32
Posts: 2017
Location: Grenoble
"ça marche pas" c'est un peu vague comme problème :-?

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


Top
 Profile  
 
PostPosted: Fri 05 Mar 2010, 23:53 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Bon ok fin bref , juste quand je fais un programme pour que quand il touche quelquechose il s'arrête lorsque je pousse un capteur ,rien se passe, même si j'utilise les codes C du manuel !!!

voila le code que j'utilise et qui ne marche pas : (je précise que les soudures sont bonnes car les capteurs marchent très bien pendant le Selftest) :
Quote:
#include “asuro.h”
int main(void)
{
Init ();

MotorDir(FWD,FWD);

MotorSpeed(120,120);

StatusLED(GREEN);
BackLED(OFF,OFF);

if (PollSwitch() > 0) // Donc si l'un des capteur est appuyé
{
MotorSpeed (0,0); // c'est cette partie qui ne s'exécute pas
StatusLED (RED);
BackLED (ON,ON); /*cela vient peut être du PollSwitch() mais il disent de l'utiliser de cette façon dans le manuel */
}


while (1)
return 0;


Voilà après j'ai tout essayé j'espere avoir été assez claire cette fois-ci , en m'excusant des deux autres fois où je n'ai pas été aussi clair que je le souhaité ,merci à tout ceux qui répondrons !
yanouriou


Top
 Profile  
 
PostPosted: Sat 06 Mar 2010, 00:38 
Offline
PMI
User avatar

Joined: Sun 04 Dec 2005, 13:32
Posts: 2017
Location: Grenoble
Essaie voir ça:

Code:
#include “asuro.h”
int main(void)
{
    Init ();

    MotorDir(FWD,FWD);
   
    MotorSpeed(120,120);

    StatusLED(GREEN);
    BackLED(OFF,OFF);

     
    while (PollSwitch() == 0) ; // attente d'un appui capteur

    /* on s'arrete */
    MotorSpeed (0,0); // stop
    StatusLED (RED);
    BackLED (ON,ON);

    /* et voila c'est fini on fait plus rien */
    while (1);

    /* jamais atteint */
    return 0;
}


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


Top
 Profile  
 
PostPosted: Sat 06 Mar 2010, 10:13 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Merci pour le code mais je l'ai essayer et rien ne se passe...
Il y a un autre probleme dont je ne connais pas l'origine c'est que sur le programmer's notepad , si jamais il detecte une erreur et que je la corrige dans le texte de compilation l'erreur apparait toujours alors que le fichier .hex est crée !

yanouriou


Top
 Profile  
 
PostPosted: Sat 06 Mar 2010, 15:36 
Offline
PMI
User avatar

Joined: Sun 04 Dec 2005, 13:32
Posts: 2017
Location: Grenoble
Allons y doucement...

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;
}



Ca devrait allumer les LEDs en fonction de si tu appuies sur un capteur ou pas.

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


Top
 Profile  
 
PostPosted: Sat 06 Mar 2010, 19:41 
Offline

Joined: Fri 05 Mar 2010, 23:27
Posts: 22
Il veut pas me creer le fichier .hex voici les erreurs du compilateur :
Code:
C:\Users\YANNICK\Desktop\ASURO NE PAS TOUCHER\asuro CD\ASURO_src\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
test.c:1:10: #include expects "FILENAME" or <FILENAME>
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
test.c:1:10: #include expects "FILENAME" or <FILENAME>
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c:1:10: #include expects "FILENAME" or <FILENAME>
test.c: In function `main':
test.c:4: warning: implicit declaration of function `Init'
test.c:6: warning: implicit declaration of function `MotorDir'
test.c:6: error: `FWD' undeclared (first use in this function)
test.c:6: error: (Each undeclared identifier is reported only once
test.c:6: error: for each function it appears in.)
test.c:8: warning: implicit declaration of function `MotorSpeed'
test.c:10: warning: implicit declaration of function `StatusLED'
test.c:10: error: `GREEN' undeclared (first use in this function)
test.c:11: warning: implicit declaration of function `BackLED'
test.c:11: error: `OFF' undeclared (first use in this function)
test.c:14: warning: implicit declaration of function `PollSwitch'
test.c:18: error: `RED' undeclared (first use in this function)
test.c:19: error: `ON' undeclared (first use in this function)
make: *** [test.o] Error 1

> Process Exit Code: 2


Je te remercie de prendre autant de temps pour m'aider !

yanouriou


Top
 Profile  
 
PostPosted: Sat 06 Mar 2010, 20:04 
Offline

Joined: Mon 27 Aug 2007, 18:05
Posts: 358
Location: Suisse
faute d'inclusion : essaye include <asuro.h> a la place.

_________________
Code source de notre robot


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

All times are UTC + 1 hour [ DST ]


Who is online

Users browsing this forum: No registered users and 2 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