Aller au contenu


Photo
- - - - -

Animation pilote dans une maquette


109 réponses à ce sujet

#41 Astondb8

Astondb8

    Pilier du forum

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

Posté 24 décembre 2011 - 09:08

Bonjour

Pour l'utilisation d'une télécommande IR cela peut-être (pour un débutant) très simple comme assez compliquée.
Tout dépend de ce que tu comptes faire et avec quoi.
Si tu achètes un module de télécommande IR spécialement conçue pour Arduino, c'est tout ce qu'il y a de plus simple aussi bien pour l’électronique que pour le code.
Si par contre, tu souhaites récupérer la télécommande d'un vieux téléviseur par exemple, cela se complique, un peut

Dans le 1er cas, il existe des modules tout faits avec un code parfaitement expliqué.
Par exemple ce modèle DFRobot

Il comporte 21 boutons que tu peux affecter à n importe quelle fonction chancelante de ton µC. Tu n'as pas besoin de calculer les séquences IR envoyées et n'a plus qu'a adapter un code déjà fait ou tu n'as plus qu'a insérer les actions que tu souhaites affecter à chaque bouton. (Nous serons là ne t’inquiète pas)
Dans le 2em cas (et c'est bien sûr un cas que je te déconseille pour le moment) tu dois avec un code C apprendre la séquence IR envoyée par ta télécommande oui d'utiliser chacune des ces séquence pour les affecter aux enclenchements d'actions.

Donc si nous éliminons la seconde solution, et que tu te constante d'une télécommande telle que celle dont je t'ai donné le lien, tout reste silmple et même un débutant arriverait à comprendre le code.

Comment cela se passe.
Tu as une télécommande qui comporte 21 boutons
Chaque bouton envoie une séquence lumineuse infrarouge au récepteur.
Ces séquences sont des phases ou la LED émettrice est allumée et d'autre ou elle est éteinte.
Le récepteur reçoit ces séquences
les décrypte
Et si elle correspond à une action programmée dans ton code, elle la déclenche.

Côté câblage
Sur le modèle présent, rien de plus simple, car le module est livré avec in câble 3 fils (le même que celui de ton servomoteur, mais numérique avec le même connecteur 3 conducteur)
La différence entre un fil analogique et un câble analogique et un câble numérique est simplement l'ordre des fils. (Data, +5v, GND pour le numérique et Data, GND, +5v pour l'analogique)
Donc tu n'a cas enficher ce connecteur sur ta carte en regardant à quelle Pin numérique il correspond (comme tu l'as fait pour tes servomoteurs)
Ce Pin sera celui à déclarer dans ton code. (toujours comme tu l'as fait pour tes servomoteurs)

Ensuite, tu vas devoir récupérer le code qui fait tourner tes servomoteurs
télécharger le code livré avec le module de ta télécommande.
Télécharger la Librairie

Copier le code de l'un vers l'autre en respectant la position de chaque ligne
Je m' explique
Copier tout ce qui se trouve avant "voidsetup()" d'un code avant "voidsetup()" de l'autre code
Copier tout ce qui se trouve entre "{ et } de "voidsetup()" d'un code entre "{ et } de "voidsetup()" de l'autre code
Copier tout ce qui se trouve entre "{ et } de "voidloop()" d'un code entre "{ et } de "voidloop()" de l'autre code

Mais nous t'aiderons
Car tu vas devoir ensuite soit avec des If mais plutôt avec des "case" décider ce que fera chaque bouton.

Voilà ne soit pas effrayé, c'est très simple et soit nous te guiderons pas a pas, soit je t'écrirais un code que tu n'aura plus qu'à envoyer vers ton µC

Cdlt
Yves

 


#42 Astondb8

Astondb8

    Pilier du forum

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

Posté 24 décembre 2011 - 01:57

Ha oui,en relisant mes réponses, je me suis rendu compte que j'ai oublié de te donner des précisions au sujet de l'alimentation de ta carte

Il y a le Jack qui supporte entre 6 et 12v (les régulateurs (7805 et le régulateur 3.3v te donneront un courant régule)
Si tu mets le cavalier Ccc +5v, le jack alimente les connecteurs Vcc en 5v (sans que tu ai besoin d'alimenter le bornier "Servos PWR" Les Pins marquées Vcc seront alimentées en 5v
Si tu ne le met pas, tu dois mettre une alimentation au bornier Servo PWR et la tension que tu y applique sera aux Pins marquées Vcc

Voilà désolé du retard

Cdlt
Yves

 


#43 VincentB

VincentB

    Nouveau membre

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

Posté 24 décembre 2011 - 02:05

Bonjour à tous,
J'avais anticipé en achetant celle ci, que j'ai reçu
Image IPB
Quand tu parles de pin numérique, sur mon shield c'est ce qui est marqué "digital pin 7 8"? juste a côté des pwm des servos?
j'ai installé la librairie IRremote, mais je veux bien que tu me donnes un code d'exemple pour juste déclencher la mise en marche d'un servo. Avec la telecommande, donc j'aurais pu juste me servir du bouton vert play/pause pour mettre en marche et arrêter l'animmation

#44 VincentB

VincentB

    Nouveau membre

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

Posté 24 décembre 2011 - 02:14

...Si tu mets le cavalier Ccc +5v....

tu veux dire pres du bornier en haut a gauche, mais je vois marqué Vcc, pas Ccc, c'est celui là? et le cavalier il m'en faut un, ou je peux recupérer un des 3 qu'on voit sur la carte?
Image IPB

#45 Astondb8

Astondb8

    Pilier du forum

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

Posté 24 décembre 2011 - 02:56

Bonjour à tous,
J'avais anticipé en achetant celle ci, que j'ai reçu
Image IPB
Quand tu parles de pin numérique, sur mon shield c'est ce qui est marqué "digital pin 7 8"? juste a côté des pwm des servos?
j'ai installé la librairie IRremote, mais je veux bien que tu me donnes un code d'exemple pour juste déclencher la mise en marche d'un servo. Avec la telecommande, donc j'aurais pu juste me servir du bouton vert play/pause pour mettre en marche et arrêter l'animmation


Bien

Nous allons faire ca en deux temps. Commençons par contrôler les codes envoyés par ta télécommande.
Donc,
Si elle n'y est pas déja
Télécharges la Librairie "servo.h"
Copie la dans le dossier Librairie de ton application Arduino
Tu dois ensuite impérativement refermer toutes les fenêtres Arduino pour que ta librairie soit prise en charge
Une fois que c'est fait,
Tu connectes ton récepteur sur la Pin numérique 11 (sur ton shield Nono les Pins numériques sont nommées Digital et effectivement les PWM sont des Pins numériques) (Les Pins Analogiques sont nommées Analog IN)
Tu laisse le Jumper Servo PWR en place
Tu alimente ta carte par le Jack (si tu as une autre forme d'alimentation, dit moi laquelle)
Tu copie le code que j'ai mis ci-dessous dans ta fenêtre code)
Tu compiles et tu envoi le code vers la carte
Tu ouvre la fenêtre "SerialMonitor"
Tu appuis Une fois sur chaque bouton de ta télécommande en la dirigeant vers le recepteur (dans le serialMonitor tu devrais avoir un nombre different pour chaque bouton)
Tu notes précieusement le code que tu obtiens pour chaque bouton
Tu me copies ces nombres dans ton prochain message

Le code de contrôle


#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}


Si tu as des questions n’hésites pas.
Mais je dois me préparer pour mon réveillon donc nous avons 1 H qui peut être largement suffisant pour terminer. Sinon, nous finirons demain

Cdlt
Yves

 


#46 Astondb8

Astondb8

    Pilier du forum

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

Posté 24 décembre 2011 - 03:07

Je n'avais pas vu ta réponse

Oui c'est une erreur de ma part désolée je suis dyslexique ;)

Il s'agit effectivement du bornier en haut a gauche et il 's'agit bien de Vcc et pas Ccc

Comme tu as besoin de 5v tu met le cavalier (pour renier les deux Pins au dessus de l'indication PWR_Sel

Si ce Jumper est en place, tu n'es pas obligé de mettre une alimentation sur le Jack La logique sera alimenté en 5v et les Pins Numérique seront alimentées avec la tension appliquée aux bornier
ATTENTION, car la tension appliquée aux Pins marquées Vcc sera la tension appliquée au bornier.
Pour être plus clair
Si tu mets le Jumper la logique (et donc le µC seront alimenté en 5v Pins Vcc seront alimentées avec la tension appliquée au bornier
Si tu ne le mets pas le jumper, tu dois alimenter la logique (et donc le µC avec une tenssion de 5v Les Pin Vcc seront alimentées (et recevront) la tension appliquée au bornier.
Quoi q'il arrive, les Pin Analogique seront alimentées en 5v

 


#47 Astondb8

Astondb8

    Pilier du forum

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

Posté 24 décembre 2011 - 03:14

Relis, j'ai fis une modification
Cette carte ne travaille pas comme les autres ATTENTION

Désolé mais j'ai relu la Doc de ton shield (Shield que je n'ai pas donc je ne connaissais pas ses spécificités et ne savais pas qu'il était différents des autres Shields

 


#48 VincentB

VincentB

    Nouveau membre

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

Posté 24 décembre 2011 - 03:24

ok pour l'alim, j'ai donc mis le jumper et j'alimente par le bornier en 5v, et plus besoin de brancher la jack, c'est bon ça marche, merci
pour la telecommande je regarde

#49 VincentB

VincentB

    Nouveau membre

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

Posté 24 décembre 2011 - 03:58

Voici les codes de la telecommande

CH-
FFA25D
FFFFFFFF

CH
FF629D
FFFFFFFF

CH+
FFE21D
FFFFFFFF

<<
FF22DD
FFFFFFFF

>>
FF02FD
FFFFFFFF

>II
FFC23D
FFFFFFFF

-
FFE01F
FFFFFFFF

+
FFA857
FFFFFFFF

EQ
FF906F
FFFFFFFF

0
FF6897
FFFFFFFF

100+
FF9867
FFFFFFFF

200+
FFB04F
FFFFFFFF

1
FF30CF
FFFFFFFF

2
FF18E7
FFFFFFFF

3
FF7A85
FFFFFFFF

4
FF10EF
FFFFFFFF

5
FF38C7
FFFFFFFF

6
FF5AA5
FFFFFFFF

7
FF42BD
FFFFFFFF

8
FF4AB5
FFFFFFFF

9
FF52AD
FFFFFFFF

#50 Astondb8

Astondb8

    Pilier du forum

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

Posté 24 décembre 2011 - 04:39

Parfait

Tu vois que ce n'est pas si compliqué que ça ;)

Malheureusement, je n'ai pas le temps de t'écrire le code aujourd'hui je dois prendre la route pour mon réveillon (Désolé)
MA femme n'est pas patiente et mon fils a hâte d'ouvrir ces cadeaux ;)
Mais je te mets le code demain ça te vas ?

En attendant, tu peux juste me dire quelles sont les actions que tu souhaites déclencher et avec quel bouton.


en attendant, je te souhaites un joyeux Noël

Cdlt
Yves

 


#51 VincentB

VincentB

    Nouveau membre

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

Posté 24 décembre 2011 - 05:15

Naturellement, pas de soucis pour continuer demain ou plus tard.
Disons pour comprendre le principe, le code qui mettrait en marche et arrêt 1 servo avec le bouton vert play/pause
Joyeux Noël également à vous tous

#52 VincentB

VincentB

    Nouveau membre

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

Posté 26 décembre 2011 - 10:13

Bonjour tout le monde,
j'ai fait mes essais de reglages de courses/vitesses pour mes 3 servos pour le pilote. J'ai d'ailleurs réouvert ma tête et enlevé le servo modifié a rotation continu qui avait un bruit désagréable et j'ai remplacé par un servo classique qui fait moins de bruit.
Là je vous mets le code, si jamais il y a des choses pas "propres" merci de me les indiquer, j'ai tatonné pour la boucle while de la bouche, mais maintenant ça marche et j'ai compris le principe

Donc si tu peux Yves, me dire (integrer le code dans le mien) pour mettre en route cette annimation avec le bouton play de la telecommande, merci

#include <Servo.h> 

Servo bras, tete, machoire;

int pos1 = 0;
int pos2 = 0; 
int pos3 = 0; 

void setup() 
{ 
  bras.attach(3);
  tete.attach(5);
  machoire.attach(6);
} 

void loop() 
{
    for(pos1 = 0; pos1 < 50; pos1 += 1) 
  {                               
    bras.write(pos1);             
    delay(20);                      
  } 
  
  delay(4000); //temps de pause entre 2 actions
  
  for(pos1 = 50; pos1>=1; pos1-=1)    
  {                                
    bras.write(pos1);               
    delay(20); 
                         
   }
   
    delay(1000); //temps de pause entre 2 actions
    
     for(pos1 = 0; pos1 < 100; pos1 += 1)  
  {                                
    tete.write(pos2);             
    delay(10);                     
  } 
  for(pos2 = 100; pos2>=1; pos2-=1)     
  {                                
    tete.write(pos2);              
    delay(10);                       
  }
  
  
    int compteur = 0;
  while (compteur < 30)
{
  
     for(pos3 = 0; pos3 < 45; pos3 += 1)  
  {                                  
    machoire.write(pos3);            
    delay(5);                      
  } 
  for(pos3 = 40; pos3>=1; pos3-=1)     
  {                                
    machoire.write(pos3);              
    delay(5);                    
  }  
  
      compteur++;
}
  
    
    while(1);
    
  }


#53 Astondb8

Astondb8

    Pilier du forum

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

Posté 26 décembre 2011 - 11:59

Bonjour Vincent

Je suis désolé, mais je ne t'ai pas oublié

Je voulais te donner un code prêt à l'emploi et donc testé. Si rien ne vient me perturber aujourd'hui, il devrait être prêt ce soir.

Pour tes erreurs.

Il y a une redéfinition de void setup pas très compliqué à réparer

Par contre, le code de la télécommande que tu utilises correspond au code d'une télécommande free.
Si tu ne changes pas les codes boutons, cela ne marchra pas.

Dernière chose, je vois le code d'un Eternet shield"
Je ne savais pas que tu en avais un et a quoi te sert il ?

De toute façon, tu déclares du code de ce Shield sans déclarer sa Librairie.

Si quelqu'un d'autre que moi (Seb peut être, car il c'est pas mal cassé la tête avec les télécommandes et doit bien les connaitre)en plus il a le même module que toi donc pourrait t'aider.
Sinon, attends ce soir.

Encore désolé
Cdlt
Yves

 


#54 VincentB

VincentB

    Nouveau membre

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

Posté 26 décembre 2011 - 12:17

Dernière chose, je vois le code d'un Eternet shield"
Je ne savais pas que tu en avais un et a quoi te sert il ?

Bonjour Yves,
c'est où que l'on voit ça, le code d'un Eternet shield? mais c'est involontaire de ma part
je voulais commencer cet aprem mon annim, mais je dans ce cas je vais attendre d'avoir ton code, mais y'a pas le feu

#55 Astondb8

Astondb8

    Pilier du forum

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

Posté 26 décembre 2011 - 08:22

Bon me voila enfin ;)

J'zai mis to,n code sur la touche 0 Mais tu peux bien sur la mettre ou tu veux en changeant simplement le code de la touche
Comme nous travaillons avec un code en Hexadécimale, pour que le compileur sache que c'est de l'exa tu dois obligatoirement mettre avant le code 0x suivi du code

Idem, j'ai repris ton code avec tes delais
Je ne sais pas si cela fponctionne avec ton animation mais je le suppose
Idem, j'ai gardé tes 3 servos (brax, tete, machoir (sans e) dessolé pour la faute ;)

Voila le code


#include <IRremote.h> // Déclaration de la Librairie IPemote.h
#include <Servo.h> // Declaration de la Librairie Servo.h 

int RECV_PIN = 11; // declaration de la Pin 11 xpour le receveur
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo bras;  // Declare un onjet Servo ce qui est assez pratique puiseque tu n'aura qu'a appeler ce cervo pour agir dessus 
Servo tete; // Voila, nous avons desormais 2 servos un que tu appellera par l'objet servo1 et l'autre que tu appellera par servo2
Servo machoir; 
int pos1 = 0;
int pos2 = 0; 
int pos3 = 0; 

void setup()
{
  bras.attach(3);
  tete.attach(5);
  machoir.attach(6);

  Serial.begin(9600); // Ouvre le Port serie
  irrecv.enableIRIn(); // Start the receiver
 

}

void loop() {
  if (irrecv.decode(&results)) {
    //Serial.println(results.value, HEX);
    if(results.value == 0xFF30CF) // Code pour la touche 0
    {
          // démarrer le programme que t uveux
    /*
     bras.write(50);             // Nous envoyons servo1 a 180
     delay(4000);
     bras
    servo2.write(150);              // Nous envoyons servo2 à 150
   
    delay(100);                       // Nous attendons 100ms (mais a voir si c'est suffisant (ou si tu veux donner un temps d'attente avant la suite)
  */
   for(pos1 = 0; pos1 < 50; pos1 += 1) 
  {                               
    bras.write(pos1);             
    delay(20);                      
  } 
  
  delay(4000); //temps de pause entre 2 actions
  
  for(pos1 = 50; pos1>=1; pos1-=1)    
  {                                
    bras.write(pos1);               
    delay(20); 
                         
   }
   
    delay(1000); //temps de pause entre 2 actions
    
     for(pos1 = 0; pos1 < 100; pos1 += 1)  
  {                                
    tete.write(pos2);             
    delay(10);                     
  } 
  for(pos2 = 100; pos2>=1; pos2-=1)     
  {                                
    tete.write(pos2);              
    delay(10);                       
  }
  
  
    int compteur = 0;
  while (compteur < 30)
{
  
     for(pos3 = 0; pos3 < 45; pos3 += 1)  
  {                                  
    machoir.write(pos3);             
    delay(5);                      
  } 
  for(pos3 = 40; pos3>=1; pos3-=1)     
  {                                
    machoir.write(pos3);              
    delay(5);                    
  }  
  
      //compteur++;

     }
    irrecv.resume(); // Receive the next value
  }

  }
}




Si tu avais le moindre probleme dit le moi
il est possible que nous ayons besoin de faire des ajustements

 


#56 Astondb8

Astondb8

    Pilier du forum

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

Posté 26 décembre 2011 - 08:28

En fait j'ai perdu pas mal de temps car j'ai commencé un code ou toutes les touches avaient une fonction
mais en te relisant je me suis rendu compote que tu n'en utilisais qu'une pour démarrer l'animation
Si tu voulais changer cela et avoir plus d'une touche, nous devrons le faire autrement avec des cases et des constantes pour les valeurs
Le code est presque fait c'est l'avantage ;)

 


#57 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é 26 décembre 2011 - 09:18

Bonjour Astondb8 je luit et fait un code aussi pour ça télécommande ( enfin pour son code complet ) et cela fonctionne.

Mon code est différent du tien , chacun a ça méthode pour programmé , enfin en tous cas ça été un grand plaisir d'avoir pu l'aidé.

Ça a pu me permettre de me remettre dans le bain , car ça fait un moment que je n'est pas fait du code.

En tout cas , continue comme ça VincentB , car ton projet et très intéressent , et je le suis de très près , j'ai hâte de voire la suite de ton avancé.

Et sur tout hésite pas a posé tes questions si tu rencontres des problèmes , on serra ravie de t'aider , et ça sera un plaisir.

#58 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris
  • Interests:Robotics

Posté 26 décembre 2011 - 11:04

Si vous pouviez partager les codes plutot que les envoyer en privé, ca peut etre pas mal. Ca peut servir a d'autres ^^


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#59 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é 27 décembre 2011 - 12:01

Salut Jbot.

Désolé si j'ai pu travaillé avec VincentB en MP mes c'est tes pour évité de polluer le sujet , voir son sujet.

Car j'ai fait pas mal de teste de code pour arrivé a un résulta concret.

Donc voici les code Jbot , que j'ai pu apporté à VincentB.

Ça, c'est un des premiers codes que je lui et fait avec un servo pour qu'il comprenne le fonctionnement avec la télécommande.

#include <Servo.h> 
#include <IRremote.h>

  //Servomoteur
  // Créer un objet pour contrôler un servomoteur
  Servo myservo;              
  int pos = 0;

  // IR PIN module récepteur et variable lire le récepteur sur la broche 11 digitale 
  int RECV_PIN = 11;
  IRrecv irrecv(RECV_PIN);
  decode_results results; 
 
  //mode d'execution
  const int MODE_AUTO = 0;
  const int MODE_MANUEL = 1;
  int mode = MODE_MANUEL; 
 
  const int MODE_STOP = 10; 
  int sous_mode_manuel = MODE_STOP;

void setup() 
{ 
  myservo.attach(3); 
  Serial.begin(9600);
  
  // début de récepteur IR
  irrecv.enableIRIn();
} 
void loop() 
{ 
  // Signal IR reçu
  if (irrecv.decode(&results))
{  
  // changement de mode par le bouton rouge de la télécommande (play/pause)
  //automatique  ou  manuel
  if(results.value==16761405)
{
  if (mode == MODE_AUTO)
  mode = MODE_MANUEL;
  else
  mode = MODE_AUTO;
}
  else if(mode == MODE_MANUEL)
{
   // Stop (play/pause) bouton de la télécommande
  if(results.value==16761405)
  sous_mode_manuel  = MODE_STOP;
}
  // recevoir la prochaine valeur
  irrecv.resume();
    
  // court délai d'attente pour répéter le signal IR
  // (L'empêcher d'arrêter si aucun signal reçu)
   delay(300);
}   
  // mode automatique touche ( play/pause )
  if(mode == MODE_AUTO)
{
  for(pos = 0; pos < 180; pos += 1)  
{                                 
  myservo.write(pos);             
  delay(15);                      
} 
  for(pos = 180; pos>=1; pos-=1)     
{                                
   myservo.write(pos);             
   delay(15);                      
 }
  }
  else   // Mode Manuel controle le robot avec la télécommande touche( play/pause )
{
  Serial.println(results.value, DEC);
  switch (sous_mode_manuel)
{
  break;
  
  // Stop (play/pause) bouton de la télécommande
  case MODE_STOP:  
  digitalWrite(pos,LOW);            
   break;   
}
 }
  }



Après il a voulu que je compile son code avec la télécommande

Donc celui si:

#include <Servo.h> 

Servo bras, tete, machoire;

int pos1 = 0;
int pos2 = 0; 
int pos3 = 0; 

void setup() 
{ 
  bras.attach(3);
  tete.attach(5);
  machoire.attach(6);
} 

void loop() 
{
    for(pos1 = 0; pos1 < 50; pos1 += 1) 
  {                               
    bras.write(pos1);             
    delay(20);                      
  } 
  
  delay(4000); //temps de pause entre 2 actions
  
  for(pos1 = 50; pos1>=1; pos1-=1)    
  {                                
    bras.write(pos1);               
    delay(20); 
                         
   }
   
    delay(1000); //temps de pause entre 2 actions
    
     for(pos2 = 0; pos2 < 100; pos2 += 1)  
  {                                
    tete.write(pos2);             
    delay(10);                     
  } 
  for(pos2 = 100; pos2>=1; pos2-=1)     
  {                                
    tete.write(pos2);              
    delay(10);                       
  }
  
  
    int compteur = 0;
  while (compteur < 6)
{
  
     for(pos3 = 0; pos3 < 45; pos3 += 1)  
  {                                  
    machoire.write(pos3);            
    delay(5);                      
  } 
  for(pos3 = 40; pos3>=1; pos3-=1)     
  {                                
    machoire.write(pos3);              
    delay(5);                    
  }  
  
      compteur++;
}
  
    
    while(1);
    
  }


Et donc voici la compilation finale:


// Créer un objet de servo pour contrôler un servo
#include <Servo.h> 
#include <IRremote.h>

  Servo bras, tete, machoire;

  int pos1 = 0;
  int pos2 = 0; 
  int pos3 = 0; 

  // IR PIN module récepteur et variable lire le récepteur sur la broche 11 digitale 
  int RECV_PIN = 11;
  IRrecv irrecv(RECV_PIN);
  decode_results results;
  
  //mode d'execution
  const int MODE_AUTO = 0;
  const int MODE_MANUEL = 1;
  int mode = MODE_MANUEL; 
 
  const int MODE_STOP = 10; 
  int sous_mode_manuel = MODE_STOP;

void setup() 
{ 
  bras.attach(3);
  tete.attach(5);
  machoire.attach(6);
  Serial.begin(9600);
  
  // début de récepteur IR
  irrecv.enableIRIn();

} 

void loop() 
{
  // Signal IR reçu
  if (irrecv.decode(&results))
{  
  // changement de mode par le bouton de la télécommande (play/pause)
  //automatique  ou  manuel
  if(results.value==16761405)
{
  if (mode == MODE_AUTO)
  mode = MODE_MANUEL;
  else
  mode = MODE_AUTO;
}
  else if(mode == MODE_MANUEL)
{
   // Stop (play/pause) bouton de la télécommande
  if(results.value==16761405)
  sous_mode_manuel  = MODE_STOP;
}
  // recevoir la prochaine valeur
  irrecv.resume();
    
  // court délai d'attente pour répéter le signal IR
  // (L'empêcher d'arrêter si aucun signal reçu)
   delay(300);
}   
  // mode automatique touche ( play/pause )
  if(mode == MODE_AUTO)
{
  for(pos1 = 0; pos1 < 50; pos1 += 1) 
{                               
    bras.write(pos1);             
    delay(20);                      
} 
  //temps de pause entre 2 actions
  delay(4000); 
  
  for(pos1 = 50; pos1>=1; pos1-=1)    
{                                
  bras.write(pos1);               
  delay(20);                        
}
  //temps de pause entre 2 actions
  delay(1000); 
    
  for(pos2 = 0; pos2 < 100; pos2 += 1)  
{                                
  tete.write(pos2);             
  delay(10);                     
} 
  for(pos2 = 100; pos2>=1; pos2-=1)     
{                                
  tete.write(pos2);              
  delay(10);                       
}
  int compteur = 0;
  while (compteur < 6)
{
  
  for(pos3 = 0; pos3 < 45; pos3 += 1)  
{                                  
  machoire.write(pos3);            
  delay(5);                      
} 
  for(pos3 = 40; pos3>=1; pos3-=1)     
{                                
  machoire.write(pos3);              
  delay(5);                    
}  
  compteur++;
} 
  while(1);  
} 
 
 else   // Mode Manuel controle le robot avec la télécommande touche( play/pause )
{
  Serial.println(results.value, DEC);
  switch (sous_mode_manuel)
{
  break;
  
  // Stop (play/pause) bouton de la télécommande
  case MODE_STOP:  
  digitalWrite(pos1,LOW);
  digitalWrite(pos2,LOW);
  digitalWrite(pos3,LOW);  
  break;   
}
 }
  } 

édité:a 13h50 le 27/12/2011

#60 Astondb8

Astondb8

    Pilier du forum

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

Posté 27 décembre 2011 - 12:55

Bon et bien voila qui me semble bien

J'avais laissé le code de Vincent mais pas de PB au contraire

Idem pour la touche comme quoi

Le tout est de savoir si cela conviens a Vincent ou pas ?

Je suppose que cela marche et que Vincent est contant ?
Il ne vas pas tarder à nous je dire.

Cdlt
Yves

 




Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users