Go Down

Topic: (Résolu) 433, telecommande 4 ch pour commander 4 actions (Read 563 times) previous topic - next topic

freerider90

bonjour,

ceci est mon premier message et j'espère que je post où il faut et comme il faut...

apres pas mal de recherche et une incomprehension total, je me tourne vers vous car mon sketch ne fonctionne pas,

je suis très debutant et j'ai donc besoin que l'on m'aiguille un peu,

MON PROJET:

utiliser une télécommande 4 ch 433 mHz pour utiliser la librairie "keyboard" dans le but de faire une télécommande capable de lancer 4 raccourcis clavier différents sur mon ordi pour contrôler différents logiciels lors de spectacles.

N'ayant pas encore reçu ma carte pro micro AT 32U4 je me suis dit que je pouvais dans un premier temps créer mon sketch pour la partie récéption de le fréquence  433 en raccordant 4 LED à ma ARDUINO UNO

voici mon sketch:
Code: [Select]
#include <RCSwitch.h>
int static ledA = 8;
int static ledB = 9;
int static ledC = 10;
int static ledD = 11;

RCSwitch mySwitch = RCSwitch();

// telecomande code: protocole 1, 24 bit
// bouton A : 14012419
// bouton B : 14012428
// bouton C : 14012464
// bouton D : 14012608

void setup() {
  
Serial.begin(9600);
mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
pinMode(ledA,OUTPUT);
pinMode(ledB,OUTPUT);
pinMode(ledC,OUTPUT);
pinMode(ledD,OUTPUT);
}

  

void loop() {
  

if (mySwitch.available()) {

int value = mySwitch.getReceivedValue();

/*if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
    }*/
 
 if(value == 14012419, 24, 1) {
   digitalWrite(ledA,HIGH);
   delay(100);
   digitalWrite(ledA,LOW);
   }
 
 else if(value == 14012428, 24, 1) {
         digitalWrite(ledB,HIGH);
         delay(100);
         digitalWrite(ledB,LOW);
         }

 else if(value == 14012464, 24, 1) {
        digitalWrite(ledC,HIGH);
        delay(100);
        digitalWrite(ledC,LOW);
        }

 else if(value == 14012608, 24, 1) {
         digitalWrite(ledD,HIGH);
         delay(100);
         digitalWrite(ledD,LOW);
         }
        
 mySwitch.resetAvailable();

  
  }

}


mon problème est le suivant:

La LED A s'allume bien quand j'appuie sur le Bouton A de ma télécommande mais lorsque j'appuis sur les autres boutons, c'est toujours la LED A qui s'allume... et uniquement la A

aurai-je du utiliser des variables?
si oui de quel type?

Merci beaucoup,




freerider90

j'ai posté un peu vite...

ce code fonctionne:

Code: [Select]
#include <RCSwitch.h>

int static ledA = 8;
int static ledB = 9;
int static ledC = 10;
int static ledD = 11;

RCSwitch mySwitch = RCSwitch();

// telecomande code protocole 1, 24 bit
// bouton A : 14012419
// bouton B : 14012428
// bouton C : 14012464
// bouton D : 14012608

void setup() {
 
Serial.begin(9600);
mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
pinMode(ledA,OUTPUT);
pinMode(ledB,OUTPUT);
pinMode(ledC,OUTPUT);
pinMode(ledD,OUTPUT);
}

 

void loop() {
 

if (mySwitch.available()) {

int value = mySwitch.getReceivedValue();
if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
    }
 
 if(mySwitch.getReceivedValue()==14012419) {
   digitalWrite(ledA,HIGH);
   delay(100);
   digitalWrite(ledA,LOW);
   }
 
 else if(mySwitch.getReceivedValue()==14012428) {
         digitalWrite(ledB,HIGH);
         delay(100);
         digitalWrite(ledB,LOW);
         }

 else if(mySwitch.getReceivedValue()==14012464) {
        digitalWrite(ledC,HIGH);
        delay(100);
        digitalWrite(ledC,LOW);
        }

 else if(mySwitch.getReceivedValue()==14012608) {
         digitalWrite(ledD,HIGH);
         delay(100);
         digitalWrite(ledD,LOW);
         }
         
 mySwitch.resetAvailable();

 
  }

}



merci quand meme.


Go Up