Aller au contenu


Photo
- - - - -

petit probleme de code


  • Veuillez vous connecter pour répondre
5 réponses à ce sujet

#1 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 20 mars 2011 - 07:05

bpnjour je suis en train de concevoir un code pour piloter mon roby via le pc mai j'ai un petit probleme lors de la compilation voila le code
#incluse
#define AVANT 1
#define ARRIERE 0
#define GAUCHE 2
#define DROITE 3

#define SERVOG 1
#define SERVOD 0

#define UPDDG 3
#define UPDDD 4

#define VMAX 5

void * operator new(size_t size) {
return malloc(size);
}

class PareChocs {
public:
byte choc(int updd) {
// On retourne l'état du pin.
// S'il est haut c'est que c'est un choc.
return digitalRead(updd);
}

PareChocs() {
// A la création du PareChocs les pins sont prets ;p
pinMode(UPDDG, INPUT);
pinMode(UPDDD, INPUT);
}
};

class Chassis {
// Le chassis a deux servomoteurs
Servo servog; // MESSAGE D'ERREUR ICI :"servo" does not name a type , lors de la compilation
Servo servod;}


// Fonction du tuto de robocop avec mes valeurs
int getNeutral(int s) {
if(s == SERVOG)
return 90;
else
return 90;
}

// Fonction du tuto de robocop
void handleS(int s, int speed) {
//Vitesse :
// 0 -> 0; 1 -> 1; 2 -> 3; 3 -> 8; 4 -> 10; v => 5 -> 30
int tab[6] = {0,1,3,8,10,30};
int pos = getNeutral(s);

int acc;
if (speed < 0)
acc = - tab[abs(speed)];
else
acc = tab[speed];

if(s == SERVOG)
servog.write(pos += acc);
else
servod.write(pos -= acc);
}

public:
// Le chassis se déplace grâce à la fonction
// du tutoriel de robocop
void move(int direction) {
int m1 = 0, m2 = 0;
switch(direction) {
case DROITE: m1 = 1; m2 = -1; break;
case GAUCHE: m1 = -1; m2 = 1; break;
case AVANT: m1 = 1; m2 = 1; break;
case ARRIERE: m1 = -1; m2 = -1; break;
}
handleS(SERVOG, m1*VMAX);
handleS(SERVOD, m2*VMAX);
}

Chassis() {
// Lors de la création du chassis, l'attachement aux
// pins de l'arduino se fera automatiquement
servog.attach(10);
servod.attach(9);
}

};

class Roby {
PareChocs * parechocs;
Chassis * chassis;


byte detecterColision(int updd) {
return parechocs->choc(updd);
}

void contourner(int sens) {
chassis->move(ARRIERE);
delay(500);

chassis->move(sens);
delay(800);
}

public:
// Déclaration de l'atribut modeAutomatique
// Un puriste C++ mettrait bool à la place
// de byte. Mais je n'ai pas envie de vous
// perdre, je garde byte car vous le
// connaissez bien.
byte modeAutomatique;

Roby() {
parechocs = new PareChocs();
chassis = new Chassis();

// le mode automatique est désactivé
// à la construction de Roby
modeAutomatique = false;
}

void arreter() {
chassis->move(-1);
// va forcer la fonction de robocop
// à mettre la vitesse 0
}

void bouger(byte direction) {
// Si Roby veut bouger. Il sait le faire
// Il sait maintenant qu'il faut bouger le chassis
chassis->move(direction);
}

void agirAutomatiquement() {
if(detecterColision(UPDDG))
contourner(DROITE);
else if(detecterColision(UPDDD))
contourner(GAUCHE);
else
bouger(AVANT);
}
};

Roby * roby;

void setup() {
roby = new Roby();
roby->arreter();

Serial.begin(9600);
}

void loop() {

if (Serial.available() > 0) {
switch(Serial.read()) {
case 'f': // avancer
roby->bouger(AVANT);
break;
case 'b': // reculer
roby->bouger(ARRIERE);
break;
case 'l': // gauche
roby->bouger(GAUCHE);
break;
case 'r': // droite
roby->bouger(DROITE);
break;
case 's': // stop
roby->arreter();
break;
case 'm': // mode
roby->arreter(); // On s'arrête et on change de mode
roby->modeAutomatique = !roby->modeAutomatique;
break;
default: // ordre inconnu
break;
}
}

if(roby->modeAutomatique)
roby->agirAutomatiquement();

delay(15);
}
[/code]


lors de la compilation j'ai ce message d'erreur ::"servo" does not name a type j'ai peut etre oublié une acolade mai je ses pas ou !

#2 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 20 mars 2011 - 07:14

Ligne 38 :
Servo servod;}

Il ne faut pas mettre l'accolade je crois.

#3 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 20 mars 2011 - 07:21

oui j'ai enlever l'acolade a la ligne 38 et aussi le ; a la ligne 33 mai toujour le memen message d'erreur je continu de regarder ligne par ligne si tu voi une erreur dit le moi stp merci.

#4 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 20 mars 2011 - 07:32

voila une petite capture du message d'erreur

http://img69.imageshack.us/i/erreurdecompilation.jpg/

#5 jady2909

jady2909

    Membre

  • Membres
  • 37 messages

Posté 20 mars 2011 - 07:35

voila une meilleur image excuser moi

http://img69.imageshack.us/i/erreurdecompilation.jpg/

#6 lordcuty

lordcuty

    Habitué

  • Membres
  • PipPip
  • 298 messages

Posté 20 mars 2011 - 08:24

ligne 1 incluse -> include

sinon utilise la fonction éditer sinon les rouges voient rouges !!!!




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users