Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino, un émetteur IR et 2 récepteurs IR

15 mai 2013 à 16:00:51

Bonjour,

j'essaye de faire fonctionner 2 récepteur IR sur un arduino, le premier récepteur quand il reçoi un code allume une led et quand le 2eme recoin le même signal doit faire marcher un buzzer, le problème est que j'arrive pas a faire en sorte que les 2 récepteur marche en même temps, a chaque fois j'en ai qu'un seul qui marche et qui fait mes deux action (allumer une led et le buzzer).

Voici mon code:

#include <IRremote.h>
#include <IRremoteInt.h>


int RECV_PIN1 = 6;
int RECV_PIN2 = 4;
IRrecv irrecv(RECV_PIN1);
decode_results results1;
IRrecv irrecv(RECV_PIN2);
decode_results results2;
int i = 0;
const int led1 = 2;
const int buzzer1 = 9;
const int buzzer2 = 10;


void setup(){
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver  
  Serial.println("Ready to decode IR");
  pinMode(led1, OUTPUT);
  pinMode(buzzer1,OUTPUT);
  pinMode(buzzer2,OUTPUT);

}

void loop() {
  if(irrecv1.decode(&results1) || irrecv2.decode(&results2) ) {
    Serial.print(i);
    if(results1.decode_type == NEC) {
      Serial.print(" NEC: ");
    } 
    else if(results1.decode_type == SONY) {
      Serial.print(" SONY: ");
    } 
    else if(results1.decode_type == RC5) {
      Serial.print(" RC5: ");
    } 
    else if(results1.decode_type == RC6) {
      Serial.print(" RC6: ");
    } 
    else if(results1.decode_type == UNKNOWN) {
      Serial.print(" UNKNOWN: ");
    }
    Serial.println(results1.value, HEX);
    Serial.println(results2.value, HEX);
    if(results1.value == 0x5501) {
      digitalWrite(led1, LOW);
      //buzz(buzzer1, buzzer2, 2500, 1000);

    }
    if(results2.value == 0x5501) {
     // digitalWrite(led1, LOW);
      buzz(buzzer1, buzzer2, 2500, 1000);

    }
    
    else {
      digitalWrite(led1, HIGH);
    }
    irrecv1.resume(); // Receive the next value
    irrecv2.resume();
    i++;
  }
  else {
    digitalWrite(led1, HIGH); 
  }
}

//fait sonner 2 buzzers
void buzz(int targetPin1, int targetPin2, long frequency, long length) {
  long delayValue = 1000000/frequency/2;
  long numCycles = 250 * length/ 1000;
  for (long i=0; i < numCycles; i++)
  {
    digitalWrite(targetPin1,HIGH);
    digitalWrite(targetPin2,HIGH);
    delayMicroseconds(delayValue);
    
    digitalWrite(targetPin1,LOW);
    digitalWrite(targetPin2,LOW);
    delayMicroseconds(delayValue);

  }
}

Merci d'avance pour votre aide

  • Partager sur Facebook
  • Partager sur Twitter
15 mai 2013 à 16:15:02

Pourquoi ne pas continuer sur le même sujet que tu as crée précédemment ?
  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

15 mai 2013 à 16:16:29

Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention plus facilement. Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

Doublon

Bonjour,

Tu as déjà posté un autre sujet concernant le même problème. Ceci rend les discussions sur le forum difficiles à suivre, pour toi comme pour les autres. Afin de garder les forums bien organisés, je ferme ce sujet et invite tous les membres à participer sur l'autre sujet.

Merci de ta compréhension.

  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »