Voilà j'ai refait une petite vidéo de l'animation, même url que la précédente
http://www.retroplane.net/mira3/animation_pilote2.wmv
les mouvements de tête sont petits, mais suffisants pour lui donner un air moins figé qu'auparavant
Encore merci Artouste et à ceux qui m'ont aidé
VincentB:
Ha oui, là c'est encore mieux, je l'ai mis sur toute mon anim, c'est nickel
Alors tant mieux, ce n'est pas vraiment beau ni optimisé comme code, mais ça à au moins le mérite d’être efficace et facilement integrable.
Jean-François, photos, video il y a les liens dans mon 1er message du sujet
mais demain je ferais une nouvelle vidéo du pilote avec ce petit mouvement de tête
je vous remercie beaucoup de votre aide, c'est passionnant ces cartes, quand on maitrise ça doit être génial
effectivement c'est bien sympathique comme cartes, avec un peu de pratique la maitrise du "général" vient assez vite.
En tout cas même sans la tête qui bouge ! votre réalisation est bien sympa, vous faites des présentations dans le cadre des rencontres de modélisme ?
Artouste:
votre réalisation est bien sympa, vous faites des présentations dans le cadre des rencontres de modélisme ?
Oui chaque été on organise la rencontre Retroplane dédiée uniquement aux maquettes de planeurs anciens, c'est l'aboutissement du travail qu'on a effectué toute l'année et détaillé sur notre forum, l'an dernier près de Cherbourg RETROPLANE 2011 aux Pierres Pouquelées et cet été ce sera en Autriche RETROPLANE 2012 au Spitzerberg - Autriche
Très beau travail en tout cas.
Et en plus... Ça vole????
Oui bien sûr, c'est fait pour voler. Entre autre curiosité, mon dernier, un triplan en tubes acier et dural comme son ancêtre, planeur Français de 1922
http://www.retroplane.net/triplan-clement/page4.htm
En tout cas je suis content d'avoir découvert les cartes Arduino, ça m'ouvre des perspectives pour des animations
C'est magnifique!
...Arduino, ça m'ouvre des perspectives pour des animations
Oui, et un peu d'aide au pilotage, ça fait rêver, non?
Non là pas vraiment pour ce type de machines, mais sinon ça se fait
VincentB:
Oui bien sûr, c'est fait pour voler. Entre autre curiosité, mon dernier, un triplan en tubes acier et dural comme son ancêtre, planeur Français de 1922
Triplan Louis Clément
En tout cas je suis content d'avoir découvert les cartes Arduino, ça m'ouvre des perspectives pour des animations
ça doit faire mal quand ça se crash!
Oui, c'est relativement fréquent, mais on arrive toujours à réparer facilement.
Pour en revenir à Arduino, maintenant que le code est au point
-est-ce que je peux récupérer mon shield et brancher mes 3 servos, batterie 12v et 5v directement sur ma carte nano?
-ou même racheter une nano mini? sur les nano mini pour y brancher l'adaptateur usb il y a des broches? ou bien il faut souder des fils?
-le code fait 12160 bytes, je suppose que ça passe sur une nano mini 168?
VincentB:
Oui, c'est relativement fréquent, mais on arrive toujours à réparer facilement.Pour en revenir à Arduino, maintenant que le code est au point
-est-ce que je peux récupérer mon shield et brancher mes 3 servos, batterie 12v et 5v directement sur ma carte nano?
-ou même racheter une nano mini? sur les nano mini pour y brancher l'adaptateur usb il y a des broches? ou bien il faut souder des fils?
-le code fait 12160 bytes, je suppose que ça passe sur une nano mini 168?
bonsoir
pour la nano
c'est ce modele ?
http://www.selectronic.fr/carte-arduino-nano.html
il peut etre alimenté en 12V , les servos en 5V (ne pas oublier la masse commune servos/arduino)
pour la nano mini, je ne connais pas , c'est quel modele ?, mais le code doit passer .
Il y a surement des specialsites de ces petites cartes qui repondront !
Oui c'est celle ci exactement
donc actuellement je l'ai sur un shield, ce qui m'a facilité la tâche pour la mise au point et la découverte, donc je suppose qu'on met les signals des servos sur les pins correspondantes marqués D et tous les + et - en commun. Pour l'alimentation ce sont les grandes broches qu'on voit dépasser sur le dessus? que je ne fasse pas de bétise. C'était surtout pour être sûr que la carte nano supporte l'intensité des 3 servos?
Nano mini finalement je laisse tomber, ça coute pratiquement le même prix que la nano avec l'usb, et moins pratique pour moi si j'ai besoin de renvoyer vite fait une modif de code dessus
VincentB:
Oui c'est celle ci exactement
donc actuellement je l'ai sur un shield, ce qui m'a facilité la tâche pour la mise au point et la découverte, donc je suppose qu'on met les signals des servos sur les pins correspondantes marqués D et tous les + et - en commun. Pour l'alimentation ce sont les grandes broches qu'on voit dépasser sur le dessus? que je ne fasse pas de bétise. C'était surtout pour être sûr que la carte nano supporte l'intensité des 3 servos?
Nano mini finalement je laisse tomber, ça coute pratiquement le même prix que la nano avec l'usb, et moins pratique pour moi si j'ai besoin de renvoyer vite fait une modif de code dessus
stop pour l'instant !
le 12V c'est pour alimenter la nano avant le regulateur
les servos eux doivent etre alimentés directement en 5 V sans passer par le 5V de la nano
les masses (servos,nano,alim) doivent être communes !
pour faire simple seules les sorties de la nano doivent etre reliées directement aux servos .
je regarde le schema de la nano et je reposte plus tard le schema de connection.
c'est pas beau
mais je suis allé au plus simple
Super, là c'est clair, je te remercie
Bonjour tout le monde
Je reviens vers vous car j'aurais besoin d'aide, j'ai essayé par moi même la modif mais pas réussi a intégrer le code
Je vous explique:
actuellement lorsque j'appui sur un bouton poussoir, je lance mon animation du pilote, j'aimerais avoir un 2eme bouton poussoir, afin de choisir de lancer une autre animation, basée sur le même principe, mais dont les synchro et delai seront differents puisque synchro avec une autre bande son
je met juste une partie de mon code actuel
#include <Servo.h>
Servo bras;
Servo tete;
Servo machoire;
int bra = 0;
int tet = 0;
int tets = 0;
int mache = 0;
int bouton = 2;
int bouton2 = 7; //2eme bouton poussoir pour jouer scene 2
long randNumber;
int fm = 20; // facteur modulo tete/machoire
void setup()
{
bras.attach(3);
tete.attach(5);
machoire.attach(6);
Serial.begin(9600);
pinMode(bouton, INPUT);
pinMode(bouton2, INPUT);
}
void loop() {
if (digitalRead(bouton) == HIGH) //scene 1 déclenchée par bouton poussoir 1
{
delay(1800); //pause avant commencer animation
for(tet = 90; tet>=80; tet-=1) //bouge la tête à droite
{
tete.write(tet);
delay(15);
}
for(bra = 90; bra>=50; bra-=1) //leve le bras
{
bras.write(bra); //petits mouvements de tête pendant qu'il leve le bras
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(30);
}
delay(300);
int compteur = 0;
while (compteur < 14) //bras va et vient de 7° sur la trompette
{
for(bra = 50; bra < 57; bra += 1)
{
bras.write(bra); //petits mouvements de tête
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(15);
}
for(bra = 57; bra>=50; bra-=1)
{
bras.write(bra); //petits mouvements de tête
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(15);
}
compteur++;
}
{
delay(300);
for(bra = 50; bra < 90; bra += 1) //baisse le bras
{
bras.write(bra); //petits mouvements de tête pendant qu'il baisse le bras
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(20);
}
delay(100);
for(tet = 80; tet < 130; tet += 1) //bouge la tete à gauche
{
tete.write(tet);
delay(15);
}
for(tet = 130; tet>=50; tet-=1) //bouge la tête à droite
{
tete.write(tet);
delay(15);
}
delay(100);
for(tet = 50; tet < 110; tet += 1) //bouge la tête à gauche
{
tete.write(tet);
delay(20);
}
delay(500); //commence à parler
int compteur = 0;
while (compteur < 3) //dis son nom
{
for(mache = 90; mache < 120; mache += 1)
{
machoire.write(mache); //petits mouvements de tête pendant qu'il parle
if (mache % fm ==0) {
randNumber = random(-1,1);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(4);
}
for(mache = 120; mache>=90; mache-=1)
{
machoire.write(mache); //petits mouvements de tête pendant qu'il parle
if (mache % fm ==0) {
randNumber = random(-1,1);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(4);
}
compteur++;
}
}
}
}
Je suppose que je dois mettre pour ce 2eme bouton
int bouton2 = 7;
pinMode(bouton2, INPUT);
mais après?? comment integrer le code pour rejouer une autre animation?
ça il faut le mettre?
if (digitalRead(bouton2) == HIGH)
au début ou juste avant la 2eme anim?
j'ai essayé différente possibilité mais ça me met des erreurs, je mets surement le code au mauvais endroit
merci de votre aide
bonjour
compilé mais pas testé
essaye ça , ce n'est pas beau, mais c'est surement plus pratique pour toi à intégrer
#include <Servo.h>
Servo bras;
Servo tete;
Servo machoire;
int bra = 0;
int tet = 0;
int tets = 0;
int mache = 0;
int bouton = 2;
int bouton2 = 7; //2eme bouton poussoir pour jouer scene 2
long randNumber;
int fm = 20; // facteur modulo tete/machoire
void setup()
{
bras.attach(3);
tete.attach(5);
machoire.attach(6);
Serial.begin(9600);
pinMode(bouton, INPUT);
pinMode(bouton2, INPUT);
}
void loop() {
if (digitalRead(bouton) == HIGH) //scene 1 déclenchée par bouton poussoir 1
{
delay(1800); //pause avant commencer animation
for(tet = 90; tet>=80; tet-=1) //bouge la tête à droite
{
tete.write(tet);
delay(15);
}
for(bra = 90; bra>=50; bra-=1) //leve le bras
{
bras.write(bra); //petits mouvements de tête pendant qu'il leve le bras
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(30);
}
delay(300);
int compteur = 0;
while (compteur < 14) //bras va et vient de 7° sur la trompette
{
for(bra = 50; bra < 57; bra += 1)
{
bras.write(bra); //petits mouvements de tête
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(15);
}
for(bra = 57; bra>=50; bra-=1)
{
bras.write(bra); //petits mouvements de tête
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(15);
}
compteur++;
}
{
delay(300);
for(bra = 50; bra < 90; bra += 1) //baisse le bras
{
bras.write(bra); //petits mouvements de tête pendant qu'il baisse le bras
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(20);
}
delay(100);
for(tet = 80; tet < 130; tet += 1) //bouge la tete à gauche
{
tete.write(tet);
delay(15);
}
for(tet = 130; tet>=50; tet-=1) //bouge la tête à droite
{
tete.write(tet);
delay(15);
}
delay(100);
for(tet = 50; tet < 110; tet += 1) //bouge la tête à gauche
{
tete.write(tet);
delay(20);
}
delay(500); //commence à parler
int compteur = 0;
while (compteur < 3) //dis son nom
{
for(mache = 90; mache < 120; mache += 1)
{
machoire.write(mache); //petits mouvements de tête pendant qu'il parle
if (mache % fm ==0) {
randNumber = random(-1,1);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(4);
}
for(mache = 120; mache>=90; mache-=1)
{
machoire.write(mache); //petits mouvements de tête pendant qu'il parle
if (mache % fm ==0) {
randNumber = random(-1,1);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(4);
}
compteur++;
}
}
} // fin animation 1
//animation 2
if (digitalRead(bouton2) == HIGH) //scene 2 déclenchée par bouton poussoir 2
{
delay(1800); //pause avant commencer animation
for(tet = 90; tet>=80; tet-=1) //bouge la tête à droite
{
tete.write(tet);
delay(15);
}
for(bra = 90; bra>=50; bra-=1) //leve le bras
{
bras.write(bra); //petits mouvements de tête pendant qu'il leve le bras
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(30);
}
delay(300);
int compteur = 0;
while (compteur < 14) //bras va et vient de 7° sur la trompette
{
for(bra = 50; bra < 57; bra += 1)
{
bras.write(bra); //petits mouvements de tête
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(15);
}
for(bra = 57; bra>=50; bra-=1)
{
bras.write(bra); //petits mouvements de tête
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(15);
}
compteur++;
}
{
delay(300);
for(bra = 50; bra < 90; bra += 1) //baisse le bras
{
bras.write(bra); //petits mouvements de tête pendant qu'il baisse le bras
if (bra % fm ==0) {
randNumber = random(-5,5);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(20);
}
delay(100);
for(tet = 80; tet < 130; tet += 1) //bouge la tete à gauche
{
tete.write(tet);
delay(15);
}
for(tet = 130; tet>=50; tet-=1) //bouge la tête à droite
{
tete.write(tet);
delay(15);
}
delay(100);
for(tet = 50; tet < 110; tet += 1) //bouge la tête à gauche
{
tete.write(tet);
delay(20);
}
delay(500); //commence à parler
int compteur = 0;
while (compteur < 3) //dis son nom
{
for(mache = 90; mache < 120; mache += 1)
{
machoire.write(mache); //petits mouvements de tête pendant qu'il parle
if (mache % fm ==0) {
randNumber = random(-1,1);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(4);
}
for(mache = 120; mache>=90; mache-=1)
{
machoire.write(mache); //petits mouvements de tête pendant qu'il parle
if (mache % fm ==0) {
randNumber = random(-1,1);
tets=tet;
tet=tet+randNumber;
tete.write(tet);
tet=tets;
}
delay(4);
}
compteur++;
}
}
} // fin animation 2
}
Merci Artouste, c'est bon ça marche
c'est comme ça que j'essayais de faire, mais je ne savais pas detecter la fin de scene1, donc avant la dernière accolade, là maintenant j'ai compris
VincentB:
Merci Artouste, c'est bon ça marche
c'est comme ça que j'essayais de faire, mais je ne savais pas detecter la fin de scene1, donc avant la dernière accolade, là maintenant j'ai compris
Tant mieux si ça te convient, ça t’évitera de perdre du temps sur la construction proprement dite ! XD
Artouste
admiratif de ton sens du détail
Perdre du temps, ça je sais faire
entre 2 collages, j'aurais bien essayé de voir s'il était possible de remplacer mon actuel lecteur MP3 que je déclenche manuellement (ainsi que l'animation déclenchée manuellement via bouton poussoir en me calant sur un bip de départ, donc vraiment bricolo comme soluc. pour l'instant) par une carte mp3 branché sur l'arduino et avec du code pouvoir déclencher mes fichiers sons et l'animation synchro qui correspond au fichier son.
J'avais acheté ce petit truc "WTV020-SD" mais comment ça se brancherait sur l'arduino?
il y a bien des schemas sur WTV020-SD-16P MP3 Voice Module - emartee.com mais je n'y comprend pas grand chose, pour ne pas dire rien
c'est faisable avec cette petite carte? ou il vaut mieux acheter un shield MP3 ou wav... plus "sérieux" si oui lequel? quelque chose que vous connaissez bien et qui marche sans soucis et "facile" à mettre en oeuvre