Aller au contenu


VincentB

Inscrit(e) (le) 09 déc. 2011
Déconnecté Dernière activité févr. 16 2016 06:57
-----

Messages que j'ai postés

Dans le sujet : Animation pilote dans une maquette

29 janvier 2012 - 07:21

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?

Dans le sujet : Animation pilote dans une maquette

29 janvier 2012 - 06:20

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

Dans le sujet : Animation pilote dans une maquette

06 janvier 2012 - 09:41

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++;

    }    


  }
}        

Dans le sujet : Animation pilote dans une maquette

06 janvier 2012 - 06:17

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

Dans le sujet : Animation pilote dans une maquette

05 janvier 2012 - 05:17

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);                        
    } 


  } 

}