Go Down

Topic: |AIDE| Erreurs sur Arduino Mega. (skateboard) (Read 881 times) previous topic - next topic

Tholsadum

Bonjour à tous!

Je tente de modifier un code provenant d'un ATmega32 afin de le faire fonctionner sur un Arduino Mega. Je vous averti tout de suite, je suis à mes débuts en C... mais je comprends vite!

Le code de base peut être retrouvé ici (from http://sites.google.com/site/onewheeledselfbalancing/Home/twin-wheel-self-balancing-skateboard-lightweight-version/code4 et je tente donc de le convertir afin de le faire fonctionner sur un Arduino Mega.

Par ailleurs, ce code fait partie d'une planche à roulettes auto-balançante. Il permettra de contrôler les moteurs en fonction des données recueillies par l'accéléromètre et le gyroscope.


P_S: Mon projet est un peu plus complexe que cela, donc si vous voulez en savoir plus, n'hésitez pas!

Merci BEAUCOUP d'avance! :P



Bon...

Voici une partie du code, celle qui me pose problème:


Code: [Select]
int main(int argc, char **argv) {
   setup();
   while(1) {
       loop();
       while (1) {
           sample_inputs();
           set_motor();

/* Initial tilt-start code
Turn on micro while board tipped to one side,
rider about to step onto it, if tilt angle crosses zero (mid) point balance algorithm
becomes operational otherwise locked in this loop forever until it is tipped to level position as rider
gets onto board*/

           tipstart=0;
           accelraw = 0;
       }
   }
   
   while (tipstart<1){

   // you need this to allow the SG filter to wind up to the proper stable value when you first turn machine on, before looking at the value of accsum (below).

   for (i=0; i<20; i++) {
       sample_inputs();
   }

   if (accsum<504 || accsum>524) {
       // if (x_accdeg>0) {
       tipstart=0;
   }
   else {
       tipstart=1;
       softstart=0.4;
   }
}

angle=0;
cur_speed=0;
/* end of tilt start code. If go beyond this point then machine has become level and is active*/

sei();

while (1) {

   sample_inputs();

   set_motor();

}
}


}



En le «compilant» à l'aide du logiciel Arduino0017
(qu'on peut télécharger gratuitement http://arduino.cc/en/Main/Software)

J'ai donc cette erreur:

Code: [Select]
error: expected declaration before '}' token

Après avoir fait quelques recherches, j'ai compris que la plateforme arduino possède déjà sa propre fonction main, et que celle qui est écrite ne fonctionne donc pas.

Mais, par quoi la remplacer?

Voilà! Pouvez-vous m'éclairer, merci!


------
De plus:
et bien, sachez tout d'abord que je ne mords pas, j'ai 16 ans!  :) je présente donc ce projet à mon école et nous avons déjà terminé la conception mécanique et électronique, il ne reste donc que cela: j'ai donc vraiment besoin de le compléter (et d'aide  :P )


MERCI (encore !)

fdufnews

#1
Jan 30, 2010, 05:16 pm Last Edit: Jan 30, 2010, 05:16 pm by fdufnews Reason: 1
La fonction main() de l'arduino est équivalente à ça:
Code: [Select]
void main(void){
   setup();
   while(1){
      loop();
   }
}


Donc dans setup() tu places ton code d'initialisation
Et tu mets dans loop() ta boucle principale.

Tholsadum

D'accord, mais, désormais, j'obtiens l'erreur suivante:

error: expected unqualified-id before 'while'


à la ligne 303:

while (tipstart<1){


flaith

Bonjour,

le message indique un soucis avant le while, pourrais-tu nous montrer un peu plus de code ?
;)

Go Up