VincentB:
"Artouste" finalement ton code est impec, en mettant des tous petits mouvements de 1° tout le long de l'anim, ça lui donne un air plus vivant, ça me va bien comme ça
"Bernarduino" j'essayerais par curiosité, mais je ne pense pas tout refaire, par contre je suppose qu'il faut télécharger cette librairie?
Ha oui, là c'est encore mieux, je l'ai mis sur toute mon anim, c'est nickel
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
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
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
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
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?
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 !
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
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.
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