Aller au contenu


Contenu de VincentB

Il y a 50 élément(s) pour VincentB (recherche limitée depuis 30-avril 13)



#38359 Animation pilote dans une maquette

Posté par VincentB sur 29 janvier 2012 - 07:21 dans Modélisme et modèles réduits

L'améliorer, oui en principe, je voulais intégrer la petite carte mp3 ou racheter un shield wave ou mp3 qui s'installerait plus facilement, sinon d'autres projets, oui mais ce sera en fin d'année, là il me faut déjà terminer ce planeur encore 4 mois de travail. Tu en avais acheté une de carte mp3? tu l'as faite marcher?



#38355 Animation pilote dans une maquette

Posté par VincentB sur 29 janvier 2012 - 06:20 dans Modélisme et modèles réduits

Bonjour,
Oui l'aide m'avait été donné par le forum Arduino, les petits mouvements de tête, aléatoire avec random et modulo pour atténuer les saccades, le code est sur ma page web, ainsi que la vidéo http://www.retroplane.net/mira3/page2.htm



#37674 Animation pilote dans une maquette

Posté par VincentB sur 06 janvier 2012 - 09:41 dans Modélisme et modèles réduits

Bon j'ai reessayé plein de fois je ne comprend pas pourquoi ça ne marche pas, je vous remet le code raccourci pour mieux voir et avec des commentaires de mes soucis

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

  { 

    delay(2000); //pause 2s avant commencer animation
    { 
  
      for(bra = 90; bra>=50; bra-=1) //le bras se lève     
      for(tet = 90; tet < 110; tet += 1)  //je voudrais que la tête bouge en même temps que le bras se lève, mais avec ce code la tete bouge en boucle rapidement et le bras monte hyper lentement pendant 30s, en fait les delay ne sont pas pris en compte et gènent et seulement apres le reste de l'animation se joue
       {   

          tete.write(tet);              
          delay(20);  //ce sont ces delay qui genent l'anim, si je les enlève ça marcherait mais les servo s'actionnent trop rapidement
          
          bras.write(bra);                
          delay(20);  //ce sont ces delay qui genent l'anim, si je les enlève ça marcherait mais les servo s'actionnent trop rapidement
                       
      }
       
    }  

    delay(4000); //le bras reste levé 4s

    for(bra = 50; bra < 90; bra += 1)  //le bras se baisse
    {                                
      bras.write(bra);              
      delay(20);  

    } 

    delay(100); 

    for(tet = 90; tet < 130; tet += 1)  //la tête tourne a droite de 40°
    {                                
      tete.write(tet);              
      delay(15);                        

    }

    for(tet = 130; tet>=50; tet-=1)   //la tête tourne a gauche de 80°  
    {                                 
      tete.write(tet);                
      delay(15);

    }  

    delay(100);  

    for(tet = 50; tet < 110; tet += 1)  //la tête revient vers la droite, décalé du centre de 20°
    {                                
      tete.write(tet);              
      delay(20);                        

    }

    delay(300);    

    int compteur = 0; 
    while (compteur < 6) //la machoire s'actionne 6 fois
    { 

      for(mache = 90; mache < 120; mache += 1)


      {                                   
        machoire.write(mache);              
        delay(4); 

      }  
      for(mache = 120; mache>=90; mache-=1) 

      {                                 
        machoire.write(mache);               
        delay(4);

      } 
      compteur++;

    }    


  }
}        



#37673 Animation pilote dans une maquette

Posté par VincentB sur 06 janvier 2012 - 06:17 dans Modélisme et modèles réduits

des commandes directes

et c'est quoi? on ne met plus loop?


Soit tu mets dans la boucle les commandes pour plusieurs servos.

c'est ce que je pensais avoir fait, mais je n'y arrive pas, je suppose que ça vient des parentheses mal placées? mais ça fait 2 jours que j'essaye des centaines de fois sans y arriver, donc là je peux pas faire plus, tant pis je sens que je vais abandonner :(



#37651 Animation pilote dans une maquette

Posté par VincentB sur 05 janvier 2012 - 05:17 dans Modélisme et modèles réduits

Bonjour tout le monde,
après avoir fait mon animation, je me rend compte que pour le réalisme, il faudrait que j'ai des petits mouvements de tête en même temps que mon pilote parle, et mouvements de tête en même temps que le bras bouge. Pour l'instant la programmation était faite en sorte d'avoir chaque servo qui marche les uns après les autres
ça fait 2 jours que je m'arrache les cheveux pour trouver le bon code, mais impossible d'y arriver, je sens que je vais tout abandonner :(
je vous mets ci dessous le code que j'ai cru comprendre qu'il faille faire, mais en fait ça lance le servo tete en boucle et rien d'autre se passe, alors que je pensais que ça aurait fait bouger la tête en même temps que le bras. J'avais presque reussit un autre code, mais là les delay n'étaient pas pris en compte, je ne sais pourquoi, donc les servo partaient à toute vitesse
j'espère que vous aller pouvoir m'aider et me donner le bon code, par exemple tout au début, pour faire bouger la tête en même temps que le bras, merci, je craaaque, snifff
#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)

  { 
    delay(2000); //pause avant demarrage


    for(bra = 90; bra>=50; bra-=1)  
    {
      bras.write(bra);                
      delay(30); 

      for(tet = 90; tet>=70; tet-=1) 
      {
        tete.write(tet);                
        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 < 120; mache += 1)


      {                                   
        machoire.write(mache);              
        delay(4); 

      }  
      for(mache = 120; mache>=90; mache-=1) 

      {                                 
        machoire.write(mache);               
        delay(4);

      } 
      compteur++;

    }    

    { 
      delay(500);


      int compteur = 0; 
      while (compteur < 5) 
      { 

        for(mache = 90; mache < 120; mache += 1)   
        {                                   
          machoire.write(mache);              
          delay(3);                       
        }  
        for(mache = 120; mache>=90; mache-=1)      
        {                                 
          machoire.write(mache);               
          delay(3);                     
        }   

        compteur++;

      }    

      { 
        delay(500);

        int compteur = 0; 
        while (compteur < 15) 
        { 

          for(mache = 90; mache < 120; mache += 1)   
          {                                   
            machoire.write(mache);              
            delay(3);                       
          }  
          for(mache = 120; 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 < 120; mache += 1)   
            {                                   
              machoire.write(mache);              
              delay(3);                       
            }  
            for(mache = 120; mache>=90; mache-=1)      
            {                                 
              machoire.write(mache);               
              delay(3);                     
            }   

            compteur++;

          } 

          { 
            delay(500);

            int compteur = 0; 
            while (compteur < 8) 
            { 

              for(mache = 90; mache < 120; mache += 1)   
              {                                   
                machoire.write(mache);              
                delay(3);                       
              }  
              for(mache = 120; mache>=90; mache-=1)      
              {                                 
                machoire.write(mache);               
                delay(3);                     
              }   

              compteur++;

            }


            { 
              delay(1200);


              int compteur = 0; 
              while (compteur < 12) 
              { 

                for(mache = 90; mache < 120; mache += 1)   
                {                                   
                  machoire.write(mache);              
                  delay(3);                       
                }  
                for(mache = 120; mache>=90; mache-=1)      
                {                                 
                  machoire.write(mache);               
                  delay(3);                     
                }   

                compteur++;

              }

              { 
                delay(1000);

                int compteur = 0; 
                while (compteur < 10) 
                { 

                  for(mache = 90; mache < 120; mache += 1)   
                  {                                   
                    machoire.write(mache);              
                    delay(3);                       
                  }  
                  for(mache = 120; 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);                        
    } 


  } 

} 



#37476 Animation pilote dans une maquette

Posté par VincentB sur 31 décembre 2011 - 06:15 dans Modélisme et modèles réduits

Salut Jean-François, tiens marrant de te retrouver là, et quelle application t'en fait de l'Arduino? Pour ce qui est de la programmation je n'ai pas de mérite, je n'ai fait que compléter ce qu'on m'avait fait, heureusement que j'ai eu l'aide du forum. Mais c'est passionnant ces modules.



#37464 Animation pilote dans une maquette

Posté par VincentB sur 31 décembre 2011 - 04:34 dans Modélisme et modèles réduits

Bonjour tout le monde
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.
Image IPB

Image IPB

Vue arrière avec le HP et les inter, qui ne se verront pas, puisque la caisse sera contre le fuselage
Image IPB
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);                        
      } 


    } 

  } 



#37416 Animation pilote dans une maquette

Posté par VincentB sur 29 décembre 2011 - 10:14 dans Modélisme et modèles réduits

Bonjour tout le monde,
Sur des sites, j'ai cru comprendre que un bouton poussoir se montait comme ça?
Image IPB
(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 :)



#37407 Animation pilote dans une maquette

Posté par VincentB sur 28 décembre 2011 - 05:27 dans Modélisme et modèles réduits

J'ai parlé trop vite à propos de la télécommande, elle avait pourtant bien marché plusieurs fois de suite, c'est a dire relancer l'animation quand celle ci était terminé, mais voilà que ça recommence, j'arrive à relancer l'animation que 2 fois de suite, voir qu'une fois, et pour que ça remarche il me faut faire un reset de la carte. Je ne sais pas si c'est le matériel qui est en cause, ou le code à modifier un peu
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



#37400 Animation pilote dans une maquette

Posté par VincentB sur 28 décembre 2011 - 12:37 dans Modélisme et modèles réduits

Bonjour tout le monde,
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



#37382 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 07:36 dans Modélisme et modèles réduits

Donc c'est bon Yves, on (avec ma femme) a repris ton 1er code de ce matin, et on a resolu le probleme des servos qui partaient à l'allumage, grâce a ce que tu m'as expliqué, a savoir que ce que moi je considérais comme le neutre 0 du servo, c'est la position 90, partir de là on a pu rerégler toutes les positions des servos bras et tete, il me reste plus que la machoire qu'on fera demain, puis appliquer le tout au scénario d'animation. Dès que ce sera fini je mettrais une petite vidéo.
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?



#37380 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 03:48 dans Modélisme et modèles réduits

si ton premier code de ce matin était celui qui marchait le mieux, j'avais juste le problème qu'a l'allumage les servos partaient de 30° et revenaient seulement après avoir été appellé par le code, ce qui fait que les tringleries abimeraient tout
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



#37375 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 02:55 dans Modélisme et modèles réduits

par contre si je mets des valeurs moins importantes par exemple
#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



#37374 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 02:50 dans Modélisme et modèles réduits

e viens de retester avec juste ton code pour 1 servo
#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



#37372 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 02:35 dans Modélisme et modèles réduits

j'alimente le bornier bleue avec une nimh 6v 2700mah, là j'ai testé avec une LIFE A123 2S 2300mah, toutes les 2 chargées, j'ai le même problème avec les mini servos digitaux et ton dernier code, mais pas de soucis avec les servo standards futaba
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



#37370 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 02:13 dans Modélisme et modèles réduits

pppfffff bon je crois avoir detecter mon problème ton dernier code ne marchant toujours pas, je reessayais avec des servos futaba standard 3003 et là ça marche, alors que je faisais les derniers essais avec des servos apparement digitaux et avec eux ça ne marche pas, (ces mini http://www.hobbyking.com/hobbyking/store/uh_viewItem.asp?idProduct=6608 )par contre avec ces servos digitaux, les premiers codes que j'utilisais du type for(pos = 0; pos < 180; pos += 1) { myservo.write(pos); delay(15); là ça marchait
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



#37365 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 11:44 dans Modélisme et modèles réduits

Petite vérification, vos servos sont des servos 0° vers 90° ou -45° 0 45°?

aucune idée, ce sont des servo pour moi dit standards que j'utilise en modelisme, a la main on arrive a les faire bouger de butée a butée sur 180°, en général sur les catalogues ils sont donnés pour des courses de -/+60°



#37360 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 10:54 dans Modélisme et modèles réduits

désolé, ça ne marche pas plus, mais en plus de temps en temps j'ai le servo bras qui se leve, mais ne revient pas, puis délai et servo tete qui ne bouge qu'une fois d'un côté et rien d'autre, mais toujours pas de machoir qui marche
mais presque a chaque remise en marche, comme sur la video tu verras que ça envoie direct les 2 servo bras et tete et rien d'autre
http://www.retroplane.net/data/test1.wmv
j'ai verifié et revérifié les branchement, tu penses que si j'utilises la même version du soft d'arduino que toi ça changera?



#37358 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 10:08 dans Modélisme et modèles réduits

je viens de me rendre compte d'une chose, je travaille avec la version du logiciel d'arduino francisée 0018, ton code passe bien la verification et c'est avec cette version que j'upload la carte
mais si je colle ton code dans la version anglaise d'arduino 1.0 là, la verification de code donne des erreurs



#37357 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 10:04 dans Modélisme et modèles réduits

ben là ça ne marche pas vraiment

le bras va bien en haut, le delai de 4s s'ecoule mais il reste a sa position, il ne revient pas
ensuite la tete tourne d'un côté et puis c'est tout, il n'y a rien d'autre qui se passe, la tete ne revient pas et la machoire ne bouge pas



#37352 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 09:12 dans Modélisme et modèles réduits

oui pour moi, position neutre, c'est départ des servos à 0, mais disons que pour le bras le 0 est en position basse, mais ça je positionne mecaniquement le bras là ou je veux, disons qu'il monte de 50° a partir de 0 qui est en position basse, et quand le bras est complétement baissé, en fait il retourne à 0, je ne fais pas bouger le bras plus vers le bas que 0, j'espère que tu comprends ce que je veux dire

pour la tete, 0 c'est bien le neutre, tête centrée



#37349 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 08:53 dans Modélisme et modèles réduits

je branche la carte arduino

j'appuie sur le bouton play (FFC23D) de la telecommande

servo bras se lève de 50°

servo bras reste en position levé sans bouger pendant 4s

servo bras baisse de 50°

pause de l'animation pendant 1s

servo tete bouge a gauche de 90°

servo tete revient au neutre puis bouge a droite de 60°

servo tete reste dans cette position à droite

servo machoire monte et descend de 45° pendant 10 fois

servo tete qui était à droite revient au neutre 0

l'animation s'arrête toute seule


**********
possibilité de relancer l'animation avec le bouton play de la télécommande

****************************


Voilà donc la base du scénario, je pense qu'après m'avoir fait un code propre, j'arriverais a rescenariser une animation complète,
merci



#37347 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 08:40 dans Modélisme et modèles réduits

non ce qu'on a fait en privé avec seb c'était juste pour lancer l'anim avec la telecommande, rien de plus, tout le code et erreurs avec while viennent de moi qui l'ai fait en tatonnant pour essayer d'avoir l'anim désirée.
Ok je vais te donner mon scenario de départ et je pourrais comme ça repartir d'un code propre, je l'adapterais ensuite a mon scenario complet que je ne connais pas encore, car il me faudra l'essayer a chaque fois sur le pilote pour voir si c'est realiste.



#37345 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 08:00 dans Modélisme et modèles réduits

en fait quand je dis que mes servos partent, c'est par rapport aux palonier que j'avais positionné pour jouer l'anim. mais je me suis rendu compte qu'en fait ils partent à leur veritables positions de neutre (que j'ai aussi pu controler en les branchant sur mon recepteur rc) et c'est ensuite qu'ils se positionnent a un autre endroit lorsqu'ils sont appellé par le code de l'anim. Donc faut que je regarde pourquoi l'anim ne les fait pas partir de 0. A ce propos, j'ai remarqué que les commentaires des codes servo parlent de position en °, mais mes servo ne bougent pas d'autant, si je code pour 180 ça doit bouger de 90° pas plus :blink:



#37344 Animation pilote dans une maquette

Posté par VincentB sur 27 décembre 2011 - 06:53 dans Modélisme et modèles réduits

Bonjour tout le monde, merci pour votre travail
-alors en ce qui concerne le code de Seb, il marche, mais à la fin de l'anim je ne peux pas la relancer à la telecommande, certainement à cause du while(1) que j'avais mis pour l'arrêt, et si je l'enlève j'ai le dernier servo bouche qui tourne en boucle sans pouvoir a^rrêter l'annim

-pour ce qui est du code de Yves, ça marche impec, content, juste 2 bricoles, a la fin compteur++; que j'ai reactivé, il y avait // devant. et le code telecommande que t'as mis FF30CF qui correspond a la touche1, ne marche pas, par contre en mettant le code de la touche play/pause FFC23D ça marche, vraiment bizarre, mais bon pas grave puisque c'est justement la touche dont je voulais me servir

Par contre, j'ai un gros problème à la mise en marche, que j'avais aussi constaté avant le code telecommande. Quand je mets sous tension la carte/annimation, j'ai les 3 servos qui partent d'au moins 30° vers la gauche et qui reviennent à 0 lorsqu'ils sont appelés par le code. Pour moi c'est un problème, ils ne doivent pas du tout bouger, car là ça tirerait sur les tringlerie hors de leur course et ça casserait tout.
Vous avez une idée de quoi ça peut provenir et comment résoudre?