Récupérer valeur d'un serial.print

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...

pas de souci - on a tous commencé en ne connaissant rien.
Bonne fin d'année !

sinon pour bien débuter avec l'arduino, un bon point de départ c'est de lire les tutos d'eskimon et de lire le tuto de base sur le C++ de OpenClassroom

Merci, je vais lire ça !

Bonne fin d'année également !

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.