Aller au contenu


Photo
- - - - -

Animation pilote dans une maquette


109 réponses à ce sujet

#101 VincentB

VincentB

    Nouveau membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Beziers - France
  • Interests:Modélisme, planeurs anciens, internet, photo, video...

Posté 31 décembre 2011 - 06:15

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.

#102 VincentB

VincentB

    Nouveau membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Beziers - France
  • Interests:Modélisme, planeurs anciens, internet, photo, video...

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


  } 

} 


#103 Astondb8

Astondb8

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 111 messages
  • Gender:Male
  • Location:Paris

Posté 05 janvier 2012 - 09:32

Salut
Le problème est simple à régler.
Cela vient encore des boucles.
Comprends bien ce qui se passe et tu pourra corriger par toi m'emmène.
Donc
Quand tu entre dans une boucle rien d'autre ne peut être entrepris tant que tu n'est pas sortie de la boucle.
Donc deux solutions
Soit tu ne travailles plus avec des boucles mais des commandes directes
Soit tu mets dans la boucle les commandes pour plusieurs servos.
La 1ère solution est plus simple.
Une troisième solution serait de travailler avec des boucles imbriquées (des boucles à l'interrieur d'autres boucles) mais plus difficile à programmer.

Regarde comment faire et nous corrigerons.

 


#104 VincentB

VincentB

    Nouveau membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Beziers - France
  • Interests:Modélisme, planeurs anciens, internet, photo, video...

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

#105 VincentB

VincentB

    Nouveau membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Beziers - France
  • Interests:Modélisme, planeurs anciens, internet, photo, video...

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

    }    


  }
}        


#106 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 29 janvier 2012 - 05:38

Bonsoir VincentB , je voulais savoir si tu avais résolut ton problème pour ton code , car comme nous n’avons pas u de nouvel

depuis un moment , c'est pour cela que je te le demande.

#107 VincentB

VincentB

    Nouveau membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Beziers - France
  • Interests:Modélisme, planeurs anciens, internet, photo, video...

Posté 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

#108 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 29 janvier 2012 - 06:34

Oui en effet , je trouve que ton projet et vraiment bien fait , c'est très réalise , très intéressent.

Tes pièce son vraiment très bien faites , et bien soigner , tu et une personne , comme on dit ( très soigneux ).

Je suis ravie que cela fonctionne maintenant , de plus ta pue réglé ton problème par toi même , on na pue constaté que tu et

une personne persévérante , et qui n'abonne pas son projet comme cela , et c'est pour ça , que je t'admire.

Sinon vas tu améliore ton projet , ou alors , vas tu en concevoir un autre ???

#109 VincentB

VincentB

    Nouveau membre

  • Membres
  • 50 messages
  • Gender:Male
  • Location:Beziers - France
  • Interests:Modélisme, planeurs anciens, internet, photo, video...

Posté 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?

#110 seb03000

seb03000

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 192 messages
  • Gender:Male
  • Location:Loins dérrière toi.
  • Interests:La Robotique , plus l'informatique

Posté 29 janvier 2012 - 07:27

Heu.... non je n'avais pas acheter de carte MP3 , je prévoyez de l'acheter .

Se que j'ai c'est un Module Amplificateur Audio DFRobot celuit si:
Image IPB

Et je voulais acheté se Module de Répétition MP3 ''DFRduino Player''
Image IPB



Répondre à ce sujet



  


1 utilisateur(s) li(sen)t ce sujet

0 members, 1 guests, 0 anonymous users