Go Down

Topic: Aide pour animatronic avec Arduino (Read 2662 times) previous topic - next topic

coasterfan

Bonjour à tous,

Depuis quelques temps, j'ai comme projet de créer un Animatronic à l'aide d'une puce Arduino.
J'ai acheté un modèle : Arduino Diecimila avec un petit bloc de branchements, un servo moteur Futuba S3003
Mais depuis il reste sans vie dans mon tiroir. :( J'ai cherché et chercher pendant longtemps pour trouver des guides afin de m'aider à créer mon projet mais sans succès, c'est encore « nouveau » comme technologie et peu de documents, tutoriels sont sur le web et dans les livres. Il est a noté que je n'ai pas de formation en électronique, que c'est mon premier projet. J'ai un ami qui est électriciens donc je peux avoir avec lui les informations de bases comme certains branchements.
Je cherche donc à faire quelque chose d'assez simple. Avec plusieurs servos donc et peut-être une piste audio synchronisée par-dessus.
Donc ce serais par exemple :
Servo moteur A banché sur la pic 1=> 20° en 1 sec gauche, 15° en 2 sec droit, 150° en 2 sec gauche.
Servo moteur B branché sur la pic 2=> 15° en 2 sec droit, 20° en 1 sec gauche, 150° en 2 sec droit.

Donc si j'ai biens compris dans mes recherches, le fichier à mettre sur la puce est du même type que ce que je viens d'écrire mais en langage spécialisé (avec des millièmes de secondes etc), et c'est là mon problème principal, je ne trouve malheureusement pas de guide qui m'explique à faire cela.
J'espère que vous pourrez m'aidez a enfin créer ce projet qui ferais enfin sortir mon cher Arduino du fond de mon tiroir.  

A bientôt :)

Luj06

Bonjour Coasterfan, ça faisait un bail (presque un an).

Et bien, essaie de reproduire les manip' décrites dans cet article : http://www.pobot.org/Debuter-avec-une-carte-Arduino.html et dis-nous ce qui coince.

coasterfan

Ok merci, je vais essayer dès que possible. (et oui période de seconde sess :( ^^ Je compile toutes les informations pour pouvoir tester dès que j'ai fini avec les examens).

Effectivement ça fait un bail, mais ça a été nécessaire afin de me rendre compte de la difficulté du projet précédent. Maintenant, je teste quelque chose de plus abordable pour mon niveau et après on verra. :)

coasterfan

Je viens de retélécharger le logiciel mais sur ton tutoriel, tu parles d'Arduino011. Or quand je le télécharge, il ne veut pas se lancer.

Par contre, la version actuelle (Arduino018) se lance sans problème mais quand je vérifie le code, je retombe sur un message d'erreur alors que le dossier servo est déjà présent d'origine. J'ai la même erreur si j'inverse les dossiers.

Quote
21: error: servo.h: No such file or directory In function 'void setup()':
In function 'void loop()':
Bad error line: -3


coasterfan

J'ai taper toutes le chemin vers Servo.h au début du code mais maintenant j'ai une autre erreur.

Quote
error: expected unqualified-id before '' token


Et il me fluore le { qui se trouve à la ligne 17

Quote
void setup();
{
 servo1.attach(9);     // le servomoteur est sur une patte PWM
}

Jean-François

#5
Aug 13, 2010, 07:32 pm Last Edit: Aug 13, 2010, 07:33 pm by jfs Reason: 1
Enlève le ;  après setup()
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

coasterfan

Ok merci, c'est moi qui ai mis ça par erreur.

donc je remet le code à l'identique, je remplis le champs pour trouver le Servo.h mais j'ai une erreur.

Voici le code du site de Luj06 avec mon chemin :
Quote
#include <I:\Documents and Settings\Le-x A-e\Mes documents\arduino-0018\libraries\Servo\Servo.h>

#define INCR  1

// on déclare le servomoteur comme une variable typée
Servo servo1;

// l'angle actuel du servomoteur
int angle = 0;
// le sens actuel du servomoteur
int sens = 0;

/**
* Initialisation du programme
*/
void setup()
{
 servo1.attach(9); // le servomoteur est sur une patte PWM
}

/**
* Boucle infinie qui va gérer la rotation et faire alterner le sens de rotation
*/
void loop()
{
   // faire tourner le servomoteur
   if (sens == 0)
   {
     angle += INCR;
   }
   else {
     angle -= INCR;
   }
   // si on est arrivé à une extremité
   if (angle == 0)
   {
     sens = 0;
   }
   if (angle == 180) {
     sens = 1;
   }
   delay(10);
   servo1.write(angle);
}



Je compile ...

Voici l'erreur

Quote

o: In function `__static_initialization_and_destruction_0':
I:\DOCUME~1\LE-~1\LOCALS~1\Temp\build8962438877533882475.tmp/sketch_aug13b.cpp:9: undefined reference to `Servo::Servo()'

o: In function `loop':
I:\DOCUME~1\LE-~1\LOCALS~1\Temp\build8962438877533882475.tmp/sketch_aug13b.cpp:46: undefined reference to `Servo::write(int)'

o: In function `setup':
I:\DOCUME~1\LE-~1\LOCALS~1\Temp\build8962438877533882475.tmp/sketch_aug13b.cpp:21: undefined reference to `Servo::attach(int)'

coasterfan

Bonjour à tous :)

J'ai une bonne nouvelle, j'avais dit que j'avais un problème pour importer sur la carte mais ce problème est régler ! J'avais laisser le choix de la carte par défaut. Donc maintenant, j'ai réussi a utiliser le code pour faire clignoter la Led déjà présente sur la carte, j'ai même "modifier" le code pour qu'elle reste allumée en continu, ...

Mais j'ai toujours le même problème avec le code du servo.

coasterfan

Hello à tous :)

Personne n'a d'idée sur l'erreur citée plus haut ?

Merci à tous :)

fdufnews

Normalement, il n'y a rien à faire. La librairie servo fait partie de installation par défaut. Et lorsque l'on crée un nouveau sketch et que l'on demande l'importation de la librairie la déclaration est insérée automatiquement au début du code. Comme la librairie servo est dans le répertoire par défaut l'include doit être écrit #include <Servo.h>

flyaway

salut,

Si tu as reussi a faire clignoter la diode, essaye de remettre
#include <Servo.h>  sans le chemin que tu as mis dans ton code.

Une facon de vérifier que le compilateur trouve la librairie servo.h est d aller dans "program" ->"import librairy" elle doit s y trouver

@+

coasterfan

Merci Flyaway, maintenant je n'ai plus d'erreur donc c'était de ma faute a toujours vouloir faire plus ...

Haaaa je suis contant, au début je n'y arrivais pas mais j'ai changer, je suis passé d'analog à Digital et ÇA FONCTIONNE !!!! merci à vous :)

Maintenant, je viens de chipoter un peu dessus, j'arrive a modifier l'angle, la vitesse de battement.

Vous avez des conseils pour essayer de faire une séquence par exemple ?

flyaway

Le reste n'est pas tres compliqué si il s agit du "automate" comme je l'ai compris.
La premiere chose a comprende c'est la fonction Loop() qui, comme son nom l'indique, est une boucle dans laquelle on place des instructions qui se répètent infiniment.

Ensuite on peut imaginer faire tourner le servo de X degrés en mettant un délai entre 2 déplacement, recommencer jusqu'à ce que la position P1 soit atteinte puis retourner a une position P2 de la meme facon la boucle fera répéter cette sequence .

A+

coasterfan

Oui c'est bien ça. :)

En réalité, la finalité du projet est que l'animatronic (ou automate) puisse faire une séquence avec :

- Mouvement de plusieurs servo moteur
- Une ou 2 led
- Un audio synchronisé sur les mouvements

Voici un exemple : http://www.youtube.com/watch?v=9cZQcJg-d2g
Si j'ai bien compris, lui utilise Phidgets Servo Controler qui est spécialement fait pour mais Arduino ferais l'affaire.

Mais bon, je procède étape, par étape, vouloir trop en faire m'a déjà pénalisé avant. ^^

Donc tant que maintenant, j'essaye de faire avec Un servo. :)

Gozaki

:D complement hors propos mais j'aime bien la derniere phrase :

"Donc tant que maintenant, j'essaye de faire avec Un servo." servo = cerveau ?

Go Up