[Programmation] Arduino commande IR
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Arduino commande IR



  1. #1
    invite6508b41a

    Question Arduino commande IR


    ------

    Bonjour,

    Je suis actuellement sur un projet pour ma classe de STI2D. Je souhaiterai concevoir une serrure commandée à l'aide d'un servomoteur et d'une télécommande IR.

    Je viens de créer un programme qui fonctionne mais j'aimerai rajouter une fonction supplémentaire. C'est à dire, qu'il faut réaliser une suite de chiffre, genre un code secret, pour que le servomoteur revienne en position 180.

    La condition est que si j'appuie sur la touche 7 puis la touche 9 alors le servo va à 180.
    ------------------------------------------------------------------------------------------
    //Code secret touche 7 et 9
    if ((results.value==TOUCHE_7) && (results.value==TOUCHE_9)){
    Pos = 180;
    Tilt.write(Pos);
    Serial.println("Bouton 7 et 9");
    }

    ------------------------------------------------------------------------------------------

    Voici le programme de l'ensemble :

    Code:
    #include <IRremote.h>
    #include <Servo.h>  //inclu Servo.h 
    
               //Déclaration du servos Tilt
    Servo Tilt;
    
    int RECV_PIN = 11;   //Pin 11 reception données IR
    IRrecv irrecv(RECV_PIN);
    decode_results results;
    
    
    int Led = 13;     //LED
    int valT;   //Valeurs envoyée aux servomoteurs
    int Pos;          // Positions droite, gauche, reset
    
    #define TOUCHE_CH1 16753245
    #define TOUCHE_CH2 16769565
    #define TOUCHE_1 16724175
    #define TOUCHE_2 16718055
    #define TOUCHE_3 16743045
    #define TOUCHE_4 16716015
    #define TOUCHE_5 16726215
    #define TOUCHE_6 16734885
    #define TOUCHE_7 16728765
    #define TOUCHE_8 16730805
    #define TOUCHE_9 16732845
    
    void setup()
    {
          //assigne pin 10 pour le signal de sortie destiné à commander le servo
      Tilt.attach(10);
     
      Serial.begin(9600);
      irrecv.enableIRIn(); // Démarrage du récepteur
      
      pinMode(Led, OUTPUT);
     
     
      
      Pos = 90;
      }
    
    void loop() {
      if (irrecv.decode(&results)) {  // Si un signal est reçu...
    
      //Code secret touche 7 et 9
     if ((results.value==TOUCHE_7) && (results.value==TOUCHE_9)){
     Pos = 180;
     Tilt.write(Pos);
     Serial.println("Bouton 7 et 9");
       }
      
      switch (results.value){
         
    
       
      //Haut Bouton 1
    case  3 : 
    Pos = 180;
       Tilt.write(Pos);
       Serial.println("Bouton 1");
      
      break; 
      
      // Bas Bouton 2
      case 16718055: 
         Pos = 5;
         Tilt.write(Pos);
            Serial.println("Bouton 2");
    
      
      break; 
    
       //Retour position prédéfinie (90 90). Touche "0" 
      case 16738455:
       Pos = 90;
       Tilt.write(Pos);
         Serial.println("Bouton 0 = Reset");
    
             
       break; 
    
      //A allumé CH+
        case 16769565:  
            digitalWrite(Led, HIGH);
            Pos = 90;
            Tilt.write(Pos);  
            Serial.println ("Allume");
      Serial.println (" Servo moteur serrure");
      Serial.println ("Reception des valeurs Y");
      Serial.println (" "); 
        
      break; 
      
      //E eteint CH- 
         case 16753245:
            digitalWrite(Led, LOW);
            Serial.println ("Eteint"); 
            Pos = 90;
            Tilt.write(Pos);
         
      break; 
            }
      //}/
     
           
    Serial.print (" Y: ");
      Serial.println (Pos);
                            //Donne au servo Pan la valeur en degrés à atteindre
      Tilt.write(Pos); 
       irrecv.resume(); // En attente de la prochaine valeur
    
    }}


    Merci pour votre future aide.
    Bien cordialement,
    Atchoum

    -----

  2. #2
    freepicbasic

    Re : Arduino commande IR

    if ((results.value==TOUCHE_7) && (results.value==TOUCHE_9)){

    Comment une valeur peut avoir 2 valeurs différentes ? (à part en physique quantique ...)
    tu doit tester une valeur et mémoriser que tu as reçu la première valeur avec un flag par exemple
    Et si tu reçois la seconde valeur et que le flag est vrai alors tu bouge ton servo
    sinon tu remet le flag sur faux

    Code:
     
     if (results.value==TOUCHE_7) { 
      flg=1;
      }
     else {
       if  ( (results.value==TOUCHE_9) && (flg=1) )
          { 
           tilt = 180;
          }
       else {
          flg=0;
          }
      }
    Si l'on met plus de 2 chiffres , il serait préférable d'utilisé un switch(flg) { case 1 etc...
    A+, pat

  3. #3
    invite6508b41a

    Thumbs up Re : Arduino commande IR

    Super merci beaucoup.
    J'essayerai ça dès que possible

Discussions similaires

  1. [Outils/Fab/Comp] commande d'un moteur dc par arduino
    Par invitef8fc1962 dans le forum Électronique
    Réponses: 12
    Dernier message: 18/01/2016, 15h56
  2. Interrupteur commandé par arduino
    Par invite2a005e36 dans le forum Électronique
    Réponses: 21
    Dernier message: 21/05/2015, 13h11
  3. - Arduino commandé par Joystick -
    Par invite2f313dba dans le forum Électronique
    Réponses: 224
    Dernier message: 31/12/2014, 18h31
  4. Arduino commande IR
    Par Lycaon dans le forum Électronique
    Réponses: 15
    Dernier message: 21/12/2013, 09h36
  5. Led commandé par une arduino + UNL2003 en 12V
    Par invite38a14d50 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/05/2010, 05h51
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...