Aller au contenu


Photo
- - - - -

[C/C++] DFRduino Romeo, contrôle moteur


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

#1 Jackyzgood

Jackyzgood

    Nouveau membre

  • Membres
  • 7 messages

Posté 06 février 2011 - 02:16

Bonjour à tous

Je me suis acheté un petit kit robot :
http://www.arobose.com/shop/kits-robot/40-kit-robot-mobile-4-roues.html
et j'ai un soucis avec la librairie AFMotor.

J'ai essayé le code de test qui est dans la librairie :

// Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!

#include

AF_DCMotor motor(4);

void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");

// turn on motor
motor.setSpeed(200);

motor.run(RELEASE);
}

void loop() {
uint8_t i;

Serial.print("tick");

motor.run(FORWARD);
for (i=0; i<255; i++) {
motor.setSpeed(i);
delay(10);
}

for (i=255; i!=0; i--) {
motor.setSpeed(i);
delay(10);
}

Serial.print("tock");

motor.run(BACKWARD);
for (i=0; i<255; i++) {
motor.setSpeed(i);
delay(10);
}

for (i=255; i!=0; i--) {
motor.setSpeed(i);
delay(10);
}


Serial.print("tech");
motor.run(RELEASE);
delay(1000);
}
[/code]

En théorie le moteur devrait accélérer dans un sens, puis décélérer pour enfin faire la même chose mais dans l'autre sens. Mais il ne tourne que dans un sens... Je ne sais pas d'où ça peut venir, quelqu'un à une idée ?

Merci

#2 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 06 février 2011 - 11:40

Hello !



Quel est le comprtemetn de ton moteru quand tu fais ça ?



Une chose me choque... Dans tes boucles "for" décrémentales, tu mets "i différent de 0" ( i !=0 )...

Pour ma part, j'aurai fait : for (i=255; i>0; i--) ... ce qui est assez logique par rapport à l'incrémentale : for (i=0; i<255; i++)



Dis nous...

#3 Jackyzgood

Jackyzgood

    Nouveau membre

  • Membres
  • 7 messages

Posté 06 février 2011 - 12:47

Alors comme dit c'est un code de test qui est avec la librairie, donc je n'ai fais que testé je ne l'ai pas écris.



Pour ce qui est du comportement du moteur, il allait dans les 2 cas dans le même sens.



Mais j'ai trouvé une solution sur ce site



Ce code fonctionne correctement, je peux faire varier le régime des 2 moteurs ainsi que les faire changer de sens. Par contre je n'arrive pas à placer ces fonctions dans un fichier à part, il me met des erreurs du type :

multiple definition of `E1'



Or j'ai bien fait attention je n'ai déclaré qu'une seule fois ces variables...

Je ne vois pas d'où ça peut venir.



#4 Jackyzgood

Jackyzgood

    Nouveau membre

  • Membres
  • 7 messages

Posté 06 février 2011 - 01:23

Bon 2eme problème résolu. J'avais crée un fichier .c en pensant que ça irait, mais finalement non, il fallait un fichier .cpp, mais comme une andouille j'ai fais une copie sous un autre nom, il restait donc toujours le fichier .c et donc il y avait bien plusieurs déclarations de variable.

Donc voila, plus de problème.

Enfin pour l'instant.

#5 Glius

Glius

    Habitué

  • Membres
  • PipPip
  • 157 messages

Posté 11 février 2011 - 10:31

En effet... ton code est du C++ et pas du C... :)

Mais félicitations pour ta propre résolution du problème... c'est en se trompant et cherchant qu'on trouve !

#6 Esprit

Esprit

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 503 messages
  • Gender:Male
  • Location:Belgique

Posté 14 février 2011 - 01:44

Et c'est surtout qu'on a bien galéré et trouvé la solution qu'on retient !
Les solutions toutes faites donnent l'impression d'avancer vite mais ça n'est que du superflus.

Bonne continuation!




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

0 members, 0 guests, 0 anonymous users