Bonjour, je suis tout nouveau dans cette communauté, et j'ai récemment eu des led et récepteurs infrarouge. Je voulais donc essayer de faire un programme pour copier une télécommande : la carte reçois un signal, et envois le même.
Le problème est que pour envoyer le signal, j'ai besoin qu'il soit en HEX, et j'utilise la fonction IrReceiver.decodedIRData.decodedRawData qui le renvoit en binaire (il me semble).
Or la fonction Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX) me l'affiche bien en HEX; je voulais donc savoir comment récupérer cette donnée.
Merci d'avance !
Mon code :
#include <IRremote.h>
int receive_pin = 5;
void setup() {
Serial.begin(9600);
IrReceiver.begin(receive_pin, ENABLE_LED_FEEDBACK); // Start the receiver
IrSender.begin(3, ENABLE_LED_FEEDBACK, USE_DEFAULT_FEEDBACK_LED_PIN); // Start the sender
}
void loop() {
if (IrReceiver.decode()) {
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); // Print "old" raw data
Serial.println(bitreverse32Bit(IrReceiver.decodedIRData.decodedRawData), HEX); // renvoit la valeur à envoyer
delay(2000);
IrSender.sendNEC(0xFB0020DF, 32); // code télécommande CGV on/off : remplacer "FB002DF" par la valeur du Serial.println
IrReceiver.resume(); // Enable receiving of the next value
}
}
la donnée numérique est dans IrReceiver.decodedIRData.decodedRawData. C'est un nombre. Vous passez ce nombre dans la fonction bitreverse32Bit() avant de l'imprimer.
Si vous faites un unsigned long code = bitreverse32Bit(IrReceiver.decodedIRData.decodedRawData);
vous aurez dans code la valeur avec les bits inversés.
Sinon quand vous faites IrSender.sendNEC(0xFB0020DF, 32) la notation en hexa est utilisée mais rien n'empêche d'écrire cela en décimal c'est la même chose pour le compilateur, c'est juste une notation en base différente.
➜ 0xFB0020DF c'est en décimal 4211089631, vous auriez pu écrire IrSender.sendNEC(4211089631, 32) et ça fonctionne pareil.
Bonjour, je viens d'essayer et ça marche !!
Merci beaucoup !
Et désolé, comme je l'ai dis, je ne m'y intéresse que depuis peu, je suis encore débutant, donc j'ai un peu de mal à comprendre les fonctions un peu plus spécifiques et complexes comme celles là, et je ne connais pas encore beaucoup de "fonctions" qu'on peut utiliser...