Arduino : interruption sur signal pwm ( recepteur RC)
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Arduino : interruption sur signal pwm ( recepteur RC)



  1. #1
    bypbop

    Arduino : interruption sur signal pwm ( recepteur RC)


    ------

    Bonjour à tous ,

    Voila j'ai fait ce petit projet visant à équiper mon quadcopter il s'agit de 4 rubans leds (ledstrip). Voila je mesure le signal venant de mon recepteur RC mais j'aimerais plutot faire une interruption lorsque par exemple le signal depasse 2000 us. J'utilise la pin 13 en input pour mesurer le signal provenant du recepteur rc.

    Alors actuellement j'arrive a changer de programme mais je suis obliger d'attendre la fin du programme pour appuyer et des fois je bascule d'un programme en sautant un programme.

    Comment je pourrais faire pour utiliser une interruption sur ma pin 13.


    Un petite vidéo de mon projet.





    Code:
    #include <SoftPWM.h>
    
    int pwmrouge;
    int pwmvert;
    int pwmbleu;
    
    int PulseRc;
    int Prog;
    
    
    int i;
    
    int ledstrip;
    void setup()
    {
      
      
      // Initialize
      SoftPWMBegin();
    
      // Create and set pin 13 to 0 (off)
      SoftPWMSet(12, 0);
      pwmrouge = 0;
      pwmvert = 0;
      pwmbleu = 0;
      pinMode(13, INPUT);
      Prog=1;
    
    }
    
    void LedRGB(int pwmrouge, int pwmvert, int pwmbleu, int ledstrip)
    {
    
    if (ledstrip==1){
      SoftPWMSetPercent(3, pwmbleu);
      SoftPWMSetPercent(2, pwmvert);
      SoftPWMSetPercent(1, pwmrouge);
    }
    if (ledstrip==2){
      SoftPWMSetPercent(6, pwmbleu);
      SoftPWMSetPercent(5, pwmvert);
      SoftPWMSetPercent(4, pwmrouge);
    }
    if (ledstrip==3){
      SoftPWMSetPercent(9, pwmbleu);
      SoftPWMSetPercent(8, pwmvert);
      SoftPWMSetPercent(7, pwmrouge);
    }
    if (ledstrip==4){
      SoftPWMSetPercent(12, pwmbleu);
      SoftPWMSetPercent(11, pwmvert);
      SoftPWMSetPercent(10, pwmrouge); 
     
    }
    if (ledstrip==5){
      SoftPWMSetPercent(12, pwmbleu);
      SoftPWMSetPercent(11, pwmvert);
      SoftPWMSetPercent(10, pwmrouge); 
      
      SoftPWMSetPercent(9, pwmbleu);
      SoftPWMSetPercent(8, pwmvert);
      SoftPWMSetPercent(7, pwmrouge);
     
      SoftPWMSetPercent(6, pwmbleu);
      SoftPWMSetPercent(5, pwmvert);
      SoftPWMSetPercent(4, pwmrouge);
      
      SoftPWMSetPercent(3, pwmbleu);
      SoftPWMSetPercent(2, pwmvert);
      SoftPWMSetPercent(1, pwmrouge);
    }
    }
    
    
    void loop()
    {
      // Turn on - set to 100%
      
      PulseRc = pulseIn(13, HIGH, 25000);
      if (PulseRc>1200){
      Prog++;
      }
      if (Prog>5){Prog=1;}
      
      if (Prog==1){
      LedRGB(100, 0, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 0, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100,0, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      
      LedRGB(0, 100, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(0, 100, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(0,100, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      
      LedRGB(0, 0, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(0, 0, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(0,0, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      
      
      LedRGB(0, 100, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(0, 100, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(0, 100, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      
      LedRGB(100, 100, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 100, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 100, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      
      LedRGB(100, 100, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 100, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 100, 0, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      
      LedRGB(100, 0, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 0, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      LedRGB(100, 0, 100, 5);
      delay(100);
      LedRGB(0, 0, 0, 5);
      delay(50);
      }
      
      
      
     
      
      
    
      if (Prog==2){
        
      pwmrouge = random(0,100);
      pwmvert = random(0,100);
      pwmbleu = random(0,100);
      
      for(i=4 ; i>=1 ; i--)
      {
      LedRGB(pwmrouge, pwmvert, pwmbleu, i);
      delay(40);
      LedRGB(0, 0, 0, i);
      delay(20);
      LedRGB(pwmrouge, pwmvert, pwmbleu, i);
      delay(40);
      LedRGB(0, 0, 0, i);
      delay(20);
      LedRGB(pwmrouge, pwmvert, pwmbleu, i);
      delay(40);
      LedRGB(0, 0, 0, i);
      delay(20);
      LedRGB(pwmrouge, pwmvert, pwmbleu, i);
      delay(40);
      LedRGB(0, 0, 0, i);
      delay(20);
      }  
      i=4;
      } 
      if (Prog==3){
          pwmrouge = random(0,100);
          pwmvert = random(0,100);
          pwmbleu = random(0,100);
          
        
          
          LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(500);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(100);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
        LedRGB(0,0,0,5);
        delay(50);
        LedRGB(pwmrouge, pwmvert, pwmbleu, 5);
        delay(50);
            
          }
          
      if (Prog==4){
      pwmrouge = 0;
      pwmvert = 0;
      pwmbleu = 100;
      
    
      
    
      LedRGB(pwmrouge, pwmvert, pwmbleu, 1);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 2);
      delay(25);
      LedRGB(0, 0, 0, 1);
      LedRGB(0, 0, 0, 2);
      delay(50);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 1);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 2);
      delay(25);
      LedRGB(0, 0, 0, 1);
      LedRGB(0, 0, 0, 2);
      delay(50);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 1);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 2);
      delay(25);
      LedRGB(0, 0, 0, 1);
      LedRGB(0, 0, 0, 2);
      delay(50);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 1);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 2);
      delay(25);
      LedRGB(0, 0, 0, 1);
      LedRGB(0, 0, 0, 2);
      delay(50);
      
      LedRGB(pwmrouge, pwmvert, pwmbleu, 3);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 4);
      delay(25);
      LedRGB(0, 0, 0, 3);
      LedRGB(0, 0, 0, 4);
      delay(50);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 3);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 4);
      delay(25);
      LedRGB(0, 0, 0, 3);
      LedRGB(0, 0, 0, 4);
      delay(50);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 3);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 4);
      delay(25);
      LedRGB(0, 0, 0, 3);
      LedRGB(0, 0, 0, 4);
      delay(50);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 3);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 4);
      delay(25);
      LedRGB(0, 0, 0, 3);
      LedRGB(0, 0, 0, 4);
      delay(50);
        
        }
        
     if (Prog==5){
      pwmrouge = 0;
      pwmvert = 0;
      pwmbleu = 0;
      
      LedRGB(pwmrouge, pwmvert, pwmbleu, 1);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 2);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 3);
      LedRGB(pwmrouge, pwmvert, pwmbleu, 4);
      }
    }

    Cordialement,
    bypbop

    -----
    Dernière modification par bypbop ; 20/10/2013 à 18h20.

  2. #2
    nornand

    Re : Arduino : interruption sur signal pwm ( recepteur RC)


  3. #3
    bypbop

    Re : Arduino : interruption sur signal pwm ( recepteur RC)

    Oui j'ai fait cette exemple une interruption avec un poussoir mais je ne comprends pas comment faire avec un signal de mon recepteur.

    Cordialement,
    bypbop

Discussions similaires

  1. [Arduino] Traitement signal codeur incrémentiel
    Par invite11607b38 dans le forum Électronique
    Réponses: 23
    Dernier message: 14/10/2013, 14h38
  2. Arduino : Probleme de tension sur une entrée d'interruption.
    Par pouic92 dans le forum Électronique
    Réponses: 9
    Dernier message: 29/04/2013, 22h25
  3. Emetteur et recepteur Ultrason brute pour base Arduino
    Par invitec6364f40 dans le forum Électronique
    Réponses: 0
    Dernier message: 03/02/2013, 20h56
  4. Arduino Interruption 0
    Par ben1015 dans le forum Électronique
    Réponses: 0
    Dernier message: 27/01/2012, 10h08
  5. Signal carré 30kHz Arduino
    Par invite9b50a77e dans le forum Électronique
    Réponses: 2
    Dernier message: 07/10/2011, 19h59
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...