Une histoire de byte ...

Bonjour à tous!
Je travail depuis plus d'un mois sur un projet intégrant un module radio.
J'ai donc besoin des développeurs les plus généreux de ce forum pour m'aider! :3
Mon problème est surement simple, mais je n'ai pas encore trouvé de solution...
J'aimerais simplement faire que à la réception d'un certain message, l'arduino recepteur allume une LED (par exemple).
Voici les deux parties du code d'exemple:

Le recepteur:

#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN]; 
byte messageLength = VW_MAX_MESSAGE_LEN; 
void setup(){
  Serial.begin(9600);
  Serial.println("Arduino pret");
  vw_setup(2000); //bps
  vw_rx_start();
  }
void loop(){
  if (vw_get_message(message, &messageLength)){
    Serial.print("Recu: ");
      for (int i = 0; i < messageLength; i++){
        Serial.write(message[i]);
        if(message == byte("hello world")){
           digitalWrite(13, HIGH);
           delay(500);
         }
        }
      Serial.println();
    }
  }

L'emetteur:

#include <VirtualWire.h>
void setup(){
  vw_setup(2000); // bps
  }
void loop(){
  send("Hello world");
  delay(1000);
  }
void send (char *message){
  vw_send((uint8_t *)message, strlen(message));
  vw_wait_tx(); 
  }

Le code du recepteur me pose problème. Je ne sais pas de quel type est le message qu'il reçoit... Un byte? Un char? Et comment pourrais-je le comparer à une valeur ? Le code ci-dessus me sort une belle erreur "error: ISO C++ forbids comparison between pointer and integer [-fpermissive]"...

Merci d'avance et bonne journée! :smiley: <3

Pas besoin d'etre un développeur chevronnés, il suffit juste d'une tasse de thé et de lire la doc :slight_smile: .

Bonjour,

Tu dois traiter ton message reçu comme une chaine de caractère (En C/C++ c'est un tableau de caractère terminé par 0) et utiliser les fonctions de comparaison de chaine.

#include <VirtualWire.h>
byte message[VW_MAX_MESSAGE_LEN+1];
byte messageLength = VW_MAX_MESSAGE_LEN;
void setup() {
  Serial.begin(9600);
  Serial.println("Arduino pret");
  vw_setup(2000); //bps
  vw_rx_start();
}
void loop() {
  if (vw_get_message(message, &messageLength)) {
    message[messageLength]=0;   // marque la fin de la chaine
    Serial.print("Recu: ");
    Serial.print((char *)message);
    if (strcmp((char *)message,"Hello world")==0)
    {
      digitalWrite(13, HIGH);
      delay(500);
    }
    Serial.println();
  }
}

Merci à tous pour vos réponses claires et rapides!
Je vais tester ça et vous tiens au courant! :smiley: