
Animation pilote dans une maquette
#81
Posté 27 décembre 2011 - 02:13
donc je vais retester avec tes premiers codes de ce matin et mes servos standard futaba
et dans mon pilote, il y a justement 1 servo mini digital et 2 autres vieux mini normaux, on va y arriver
#82
Posté 27 décembre 2011 - 02:19
Si ça marche avec le 1er code c'est que tu as un PB de batterie et que ton alimentation de délivre pas assez de courant.
Du coup il peut le faire de 1 en 1 et avec du mal. Par contre il ne peut pas envoyer un servo beaucoup plus loin
C'est quoi ton alimentation ?
#83
Posté 27 décembre 2011 - 02:35
par contre j'ai retesté tes 2 premiers codes de ce matin (dont le 1er avec le code telecommande) mais là ça ne marche pas
j'ai testé aussi en alimentant la carte avec l'usb et aussi avec du 12v sur la Jack avec un accu lipo 3S 2000mah
donc niveau batterie je ne pense pas qu'il y ait un soucis, d'autant que j'utilise ce type de batterie dans mes planeurs avec beaucoup plus de servos
#84
Posté 27 décembre 2011 - 02:50
#include <Servo.h> Servo bras; void setup() { bras.attach(3); } void loop() { bras.write(0); delay(1000); bras.write(180); delay(1000); }
et les servo standards futaba marchent bien, alors que les mini numeriques ne marchent pas
#85
Posté 27 décembre 2011 - 02:55
#include <Servo.h> Servo bras; void setup() { bras.attach(3); } void loop() { bras.write(10); delay(1000); bras.write(100); delay(1000); }
là mes mini numeriques marchent, comme si ils n'acceptaient pas les valeurs extremes
#86
Posté 27 décembre 2011 - 03:11
Fait des essais avec un servo au élargis petit à petit la plage de leur course.
90/100
90/110
90/120
etc
Puis
80/110
70/120
60//130
Etc
Des que tu vois le servo buter c'est que tu es à la limite
Étant à chaque fois le délais pour qu'il zi le temps d'y aller
#87
Posté 27 décembre 2011 - 03:27
Vola n code qu'il fais ce que tu voulais, mas avec des boucles plutot que des envois directs.Mais ce n'est pas normal le code que je t'ai donné marche trex bien chez moi
#include <Servo.h> Servo bras; Servo tete; Servo machoire; int pos1 =0; int pos2 =0; int pos3 =0; void setup() { bras.attach(3); tete.attach(5); machoire.attach(6); bras.write(0); delay(1000); bras.write(0); delay(1000); bras.write(0); delay(1000); } void loop() { // Bras aller for(pos1 = 0; pos1 < 50; pos1 += 1) { bras.write(pos1); delay(15); } delay(4000); // Attente de 4 secondes // Bras retour for(pos1 = 50; pos1>=0; pos2-=1) { bras.write(pos1); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(1000); // atte te de 1 seconde // Tete aller for(pos2 = 0; pos2 < 90; pos2 += 1) { tete.write(pos2); delay(15); } delay(1000); // attente 1 seconde // Tete retour for(pos2 = 90; pos1>=60; pos2-=1) { tete.write(pos2); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(1000); // attente 1 seconde // Machoire 1 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(1000); // atte te de 1 seconde // Machoire 2 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 3 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 4 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 5 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 6 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 7 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 8 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 9 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } // Machoire 10 // Machoire aller for(pos3 = 0; pos3 < 40; pos3 += 1) { machoire.write(pos3); delay(15); } // Machoir retour retour for(pos1 = 40; pos3>=0; pos3-=1) { machoire.write(pos3); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } delay(5000); // atte te de 1 seconde }
#88
Posté 27 décembre 2011 - 03:48
mais je vais essayer de travailler sur ton code de ce matin et essayer de comprendre les 0 des positions
je vais revoir ça tranquillement, parceque là je me mélange les pinceaux
#89
Posté 27 décembre 2011 - 07:36
Par contre la télécommande marche pas terrible, enfin plutot bizzarement, il faut appuyer sur le reset de la carte, sinon elle ne marche pas, puis elle arrive a lancer 2 fois l'animation, et si je veux la relancer une 3eme fois, il me faut refaire un reset de la carte. je ne sais pas si ça vient du materiel?
#90
Posté 27 décembre 2011 - 09:48
#93
Posté 28 décembre 2011 - 12:37
La télécommande, j'avais demandé à Yves, juste un démarrage de l'animation via bouton play, mais pas spécialement d'arrêt, puisqu'elle ne dure que 1 minute et s'arrête seule à la fin. Là j'ai terminé le code de synchronisation avec ma bande son, je ferais une petite video cet aprem. Apparement ma télécommande marche maintenant comme il faut, du moment que j'alimente ma carte/shiel par uniquement le bornier bleu + jumper, donc je ne touche plus à rien.
Je vous mets le code, au cas où il y aurait de grossières erreurs, mais bon pour ce dont j'ai besoin il marche, donc même s'il n'est pas parfait je pense que je ne vais plus trop y toucher
#include <IRremote.h> #include <Servo.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; Servo bras; Servo tete; Servo machoire; int bra = 0; int tet = 0; int mache = 0; void setup() { bras.attach(3); tete.attach(5); machoire.attach(6); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { if(results.value == 0xFFC23D) { for(bra = 90; bra>=50; bra-=1) { bras.write(bra); delay(30); } delay(4000); for(bra = 50; bra < 90; bra += 1) { bras.write(bra); delay(20); } delay(100); for(tet = 90; tet < 130; tet += 1) { tete.write(tet); delay(15); } for(tet = 130; tet>=50; tet-=1) { tete.write(tet); delay(15); } delay(100); for(tet = 50; tet < 110; tet += 1) { tete.write(tet); delay(20); } delay(300); int compteur = 0; while (compteur < 6) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(500); int compteur = 0; while (compteur < 5) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(500); int compteur = 0; while (compteur < 15) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { for(tet = 110; tet>=75; tet-=1) { tete.write(tet); delay(15); } for(tet = 75; tet < 100; tet += 1) { tete.write(tet); delay(15); } int compteur = 0; while (compteur < 18) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(500); int compteur = 0; while (compteur < 8) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(1200); int compteur = 0; while (compteur < 12) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(1000); int compteur = 0; while (compteur < 10) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } } } } } } } delay(2000); for(bra = 90; bra>=50; bra-=1) { bras.write(bra); delay(30); } delay(4000); for(bra = 50; bra < 90; bra += 1) { bras.write(bra); delay(20); } delay(1000); for(tet = 110; tet>=60; tet-=1) { tete.write(tet); delay(15); } for(tet = 60; tet < 90; tet += 1) { tete.write(tet); delay(15); } irrecv.resume(); } } }
Pour l'instant j'ai prévu de lancer la bande son via un petit lecteur mp3 + ampli/HP de façon manuel, j'ai sur cette bande son un bip de départ, dès que je l'entend j'appui sur la télécommande et mon anim se lance. J'ai testé pas mal de fois et ça ne pose pas de soucis de synchronisation, bon ok c'est du bricolage, mais je ne suis pas non plus au 1/10e de s près, toute façon le mouvement vertical de machoire que j'ai fait ne peut pas reproduire une véritable machoire humaine avec mouvements complexes.
Par contre j'ai aussi acheté un module mp3, est-ce qu'il serait facile de l'intégrer sur l'arduino pour remplacer mon bricolage de lecteur mp3 externe? si oui comment? est-ce qu'il faut des composants en plus de cette carte? c'est ce module là http://www.emartee.com/product/41540/MP3%20Sound%20Module%20Mini%20SD%20Card
#95
Posté 28 décembre 2011 - 05:27
Mais je préfèrerais finalement essayer de déclancher l'animation avec un simple petit bouton poussoir.
Comment branches t'on un bouton poussoir à 2 contacts? sur quelles pins du shield? et quel code doit on mettre pour remplacer celui de la télécommande. Avec ce bouton poussoir je voudrais donc pouvoir juste lancer l'animation dont le dernier code est ci-dessus. Il me sera facile de camoufler ce bouton poussoir sur le planeur, et ça m'éviterait la télécommande, qui semble un peu camelote
Pour la bouche, la synchro serait bien sûr perfectible en ajoutant quelques micro pause de plus, mais vu la taille de la bouche on ne voit vraiment pas grand chose. En fait sur la video on voit plus les défauts qu'en vrai
Voici la petite video du pilote avec le son
http://www.retroplane.net/mira3/animation_pilote.wmv
#96
Posté 29 décembre 2011 - 10:14
Sur des sites, j'ai cru comprendre que un bouton poussoir se montait comme ça?

(jai soudé une resistance de 10k)
mais vous pouvez me confirmer que c'est bon? j'ai toujours peur de crâmer la carte en faisant des choses au pif
et pour remplacer le recepteur IR de la télécommande, je branche aussi mon bouton poussoir sur la pin 11?
si vous pouviez m'aider a remplacer le code de la telecommande (qui est 3 messages plus haut) pour actionner l'animation par ce bouton poussoir plutot que par la telecommande, merci

#97
Posté 29 décembre 2011 - 06:43
La valeur n'a pas trop d’importance
Pas trop faible (elle ne servirait à rien
Pas trop grosse elle consommerait pour rien
http://dl.dropbox.com/u/4673542/Forum/PullUp.JPG
#98
Posté 31 décembre 2011 - 04:34
Finalement j'ai préféré mettre tout le matériel d'animation dans une caisse, qui sera branchée discrètement sous le planeur, plutot que de l'embarquer dans le planeur, qui en vol ne servirait à rien, gain de poids et place qui m'arrange bien
Pour ce qui est de la télécommande, j'ai réussi a modifier le code et donc remplacé par un bouton poussoir, la synchro est bonne, quand j'entend le bip de départ de la bande son, j'appuie sur le bouton et l'animation démarre
Voici la caisse que j'ai faite en ctp 15x10x9cm peinte à la Humbrol et veillit, les lettrages sont peints avec un pochoir découpé à la CraftRobo.


Vue arrière avec le HP et les inter, qui ne se verront pas, puisque la caisse sera contre le fuselage

merci à tous pour votre aide, je continue a suivre le forum, c'est passionnant ce que vous faites, et pour le prochain planeur j'essayerais d'intégrer le lecteur mp3 à la carte avec votre aide, ou peut être pour celui là, mais je me pencherais sur le sujet quand j'aurais terminé la construction du planeur, j'ai encore 4 ou 5 mois de boulot
voici le code final de l'animation, déclenché par le bouton poussoir
#include <Servo.h> Servo bras; Servo tete; Servo machoire; int bra = 0; int tet = 0; int mache = 0; int bouton = 2; void setup() { bras.attach(3); tete.attach(5); machoire.attach(6); Serial.begin(9600); pinMode(bouton, INPUT); } void loop() { if (digitalRead(bouton) == HIGH) { for(bra = 90; bra>=50; bra-=1) { bras.write(bra); delay(30); } delay(4000); for(bra = 50; bra < 90; bra += 1) { bras.write(bra); delay(20); } delay(100); for(tet = 90; tet < 130; tet += 1) { tete.write(tet); delay(15); } for(tet = 130; tet>=50; tet-=1) { tete.write(tet); delay(15); } delay(100); for(tet = 50; tet < 110; tet += 1) { tete.write(tet); delay(20); } delay(300); int compteur = 0; while (compteur < 6) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(500); int compteur = 0; while (compteur < 5) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(500); int compteur = 0; while (compteur < 15) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { for(tet = 110; tet>=75; tet-=1) { tete.write(tet); delay(15); } for(tet = 75; tet < 100; tet += 1) { tete.write(tet); delay(15); } int compteur = 0; while (compteur < 18) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(500); int compteur = 0; while (compteur < 8) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(1200); int compteur = 0; while (compteur < 12) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } { delay(1000); int compteur = 0; while (compteur < 10) { for(mache = 90; mache < 140; mache += 1) { machoire.write(mache); delay(3); } for(mache = 140; mache>=90; mache-=1) { machoire.write(mache); delay(3); } compteur++; } } } } } } } delay(2000); for(bra = 90; bra>=50; bra-=1) { bras.write(bra); delay(30); } delay(4000); for(bra = 50; bra < 90; bra += 1) { bras.write(bra); delay(20); } delay(1000); for(tet = 100; tet>=60; tet-=1) { tete.write(tet); delay(20); } for(tet = 60; tet < 90; tet += 1) { tete.write(tet); delay(20); } } }
#99
Posté 31 décembre 2011 - 05:21
et belle initiative pour la boite j'aime bien.
Je voie que mes conseille pour le bouton poussoir a donné c'est fruit.
J'ai hâte de voir une démonstration en vidéo de ton projet qui et enfin fini VincentB , sa doit bien donné.
En revanche je te souhaite de passé une très bonne fête de fin d'année.

Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users