Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Interruption sur arduino Nano : Projet Led



  1. #1
    bypbop

    Interruption sur arduino Nano : Projet Led


    ------

    Bonjour à tous,
    Voila je viens de faire ma première interruption sur la pin 2 de mon arduino nano :

    En fait je mesure la pulse de mon recepteur Radio (RC) et j'incrémente un programme sur mes leds. Tout fonctionne correctement j'arrive bien a passer de programme en programme mais le seul soucis c'est que dès fois je reste sur le meme programme car la boucle qui increment le prog se fait plusieurs.

    Normal qd j'appuie sur mon poussoir RC la pulse va etre mesurer plusieurs fois et donc incrémenter plusieurs fois ma variable.

    Comment je pourrais eviter se phénomène ?


    Code:
    
    volatile long servo_startPulse;
    volatile unsigned int pulse_val;
    int servo_val;
    
    #include <Adafruit_NeoPixel.h>
    
    #define PIN0 4
    #define PIN1 5
    #define PIN2 6
    #define PIN3 7
    
    int i;
    int wait;
    
    int numpixel=8;
    int prog=0;
    
    
    Adafruit_NeoPixel strip0 = Adafruit_NeoPixel(numpixel, PIN0, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(numpixel, PIN1, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(numpixel, PIN2, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(numpixel, PIN3, NEO_GRB + NEO_KHZ800);
    
    
    void setup(){
     Serial.begin(9600);
     //pinMode(servo_val, INPUT);
     attachInterrupt(0, pulse_begin, RISING);
      strip0.begin();
      strip0.show(); // Initialize all pixels to 'off'
      strip1.begin();
      strip1.show();
      strip2.begin();
      strip2.show();
      strip3.begin();
      strip3.show();
      
      i=0;
      wait = 0;
    }
    
    void pulse_begin(){
      servo_startPulse = micros();
      detachInterrupt(0);
      attachInterrupt(0, pulse_end, FALLING);
    }
    
    void pulse_end(){
      pulse_val = micros() - servo_startPulse;
      detachInterrupt(0);
      attachInterrupt(0,pulse_begin, RISING);
      
        
    }
    
    void colorWipe(uint32_t c, uint8_t wait) {
      for(uint16_t i=0; i<strip0.numPixels(); i++) {
          strip0.setPixelColor(i, c);
          strip1.setPixelColor(i, c);
          strip2.setPixelColor(i, c);
          strip3.setPixelColor(i, c);
          strip0.show();
          strip1.show();
          strip2.show();
          strip3.show();
          delay(wait);
      }
    }
    
    
    
    void loop(){
    
    if (pulse_val >=1600){
         prog++;
         if (prog>2){prog=1;}
      }  
      
    if (prog==1){
    
    wait=30;
      
    for (i=strip0.numPixels()-1; i>=0 ; i--){
    strip0.setPixelColor(i, 255, 255, 255);
    strip1.setPixelColor(i, 255, 255, 255);
    strip0.show();
    strip1.show();
    delay(wait);
    }
    for (i=0; i<numpixel ; i++){
    strip2.setPixelColor(i, 255, 255, 255);
    strip3.setPixelColor(i, 255, 255, 255);
    strip2.show();
    strip3.show();
    delay(wait);
    }
    for (i=strip0.numPixels()-1; i>=0 ; i--){
    strip2.setPixelColor(i, 0, 0, 0);
    strip3.setPixelColor(i, 0, 0, 0);
    strip2.show();
    strip3.show();
    delay(wait);
    }
    for (i=0; i<numpixel ; i++){
    strip0.setPixelColor(i, 0, 0, 0);
    strip1.setPixelColor(i, 0, 0, 0);
    strip0.show();
    strip1.show();
    delay(wait);
    }
    }
    if (prog==2){
    
      colorWipe(strip0.Color(255, 0, 0), 50); // Red
      colorWipe(strip0.Color(0, 255, 0), 50); // Green
      colorWipe(strip0.Color(0, 0, 255), 50); // blue
      colorWipe(strip0.Color(255, 255, 0), 50); // Jaune
      colorWipe(strip0.Color(0, 255, 255), 50); // cyan
      colorWipe(strip0.Color(255, 0, 255), 50); // magenta
      colorWipe(strip0.Color(255, 255, 255), 50); // blanc
    }
    Serial.println(prog);
    }

    Cordialement,
    bypbop

    -----

  2. #2
    bypbop

    Re : Interruption sur arduino Nano : Projet Led

    Personne n'a une petite idée ?


    Cordialement,
    bypbop

Sur le même thème :

Discussions similaires

  1. Arduino : interruption sur signal pwm ( recepteur RC)
    Par bypbop dans le forum Électronique
    Réponses: 2
    Dernier message: 21/10/2013, 00h04
  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. Projet de bac Arduino
    Par kocliko dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 19/03/2013, 09h52
  4. Arduino nano
    Par boudechou dans le forum Électronique
    Réponses: 1
    Dernier message: 04/02/2013, 23h00
  5. Arduino Interruption 0
    Par ben1015 dans le forum Électronique
    Réponses: 0
    Dernier message: 27/01/2012, 10h08
Découvrez nos comparatifs produits sur l'informatique et les technologies.