Pages: [1]   Go Down
Author Topic: |AIDE| Erreurs sur Arduino Mega. (skateboard)  (Read 704 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 17
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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! smiley-razz



Bon...

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


Code:
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:
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!  smiley 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  smiley-razz )


MERCI (encore !)
Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3010
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La fonction main() de l'arduino est équivalente à ça:
Code:
void main(void){
    setup();
    while(1){
       loop();
    }
}

Donc dans setup() tu places ton code d'initialisation
Et tu mets dans loop() ta boucle principale.
« Last Edit: January 30, 2010, 11:16:43 am by fdufnews » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 17
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

error: expected unqualified-id before 'while'


à la ligne 303:

while (tipstart<1){

Logged

$300:20 58 FC 60
Offline Offline
Newbie
*
Karma: 1
Posts: 26
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

le message indique un soucis avant le while, pourrais-tu nous montrer un peu plus de code ?
 smiley-wink
Logged

Pages: [1]   Go Up
Jump to: