Aide pour animatronic avec Arduino

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. :frowning: 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 :slight_smile:

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

Et bien, essaie de reproduire les manip' décrites dans cet article : Débuter avec une carte Arduino - PoBot et dis-nous ce qui coince.

Ok merci, je vais essayer dès que possible. (et oui période de seconde sess :frowning: ^^ 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. :slight_smile:

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.

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

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

error: expected unqualified-id before '' token

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

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

Enlève le ; après setup()

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 :

#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

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)'

Bonjour à tous :slight_smile:

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.

Hello à tous :slight_smile:

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

Merci à tous :slight_smile:

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>

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

@+

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 :slight_smile:

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 ?

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+

Oui c'est bien ça. :slight_smile:

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 : Mango - Animatronic Skull - Ghostbusters - YouTube
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. :slight_smile:

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

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

Lol, oui en partie mais là c'est surtout un Servo Moteur ^^