Comandi tramite RF Links e Virtual Wire

Salve,

ho un piccolo problema per quanto riguarda la comunicazione di comandi tramite gli rf links e virtual wire.
Premetto che ho cercato, ma non ho trovato risposte, quindi chiedo il vostro aiuto...

Vi spiego brevemente ciò che dovrei fare:
-un telecomando con una 15ina di tasti, ai quali è associato un messaggio (es. button1 deve inviare "led1on", button2 deve inviare "led1off", ecc...)
-un ricevitore che in base al messaggio recepito attivi o disattivi un'uscita, ed in alcuni casi incrementi o decrementi una variabile.

il codice (di test) che uso è questo:
TX

#include <VirtualWire.h>
int btn = 2;
void setup()
{
  pinMode(btn,INPUT);
  
    vw_setup(2000);	 // Bits per sec
}

void loop()
{
  if (digitalRead(btn) == HIGH) {
    
    const char *msg = "ciao";

    digitalWrite(13, true); // Flash a light to show transmitting
    vw_send((uint8_t *)msg, strlen(msg));
    vw_wait_tx(); // Wait until the whole message is gone
    digitalWrite(13, false);
    delay(200);
    }
}

e fin quì ok...

RX

#include <VirtualWire.h>
//#include <ShiftRegLCD.h>

//ShiftRegLCD lcd(2, 4, TWO_WIRE);

boolean mx = false;
void setup()
{
  pinMode(10, OUTPUT);
  
   // Serial.begin(9600);	// Debugging only
 
//lcd.print("begin:");
    // Initialise the IO and ISR
   
    vw_setup(2000);	 // Bits per sec
vw_set_rx_pin(8);  
    vw_rx_start();  
delay(2000);    // Start the receiver PLL running
//lcd.clear();
}

void loop()
{
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;

    if (vw_get_message(buf, &buflen)) // Non-blocking
    {
	int i;

      //  digitalWrite(13, true); // Flash a light to show received good message
	// Message with a good checksum received, dump it.
	//Serial.print("Got: ");
	
	for (i = 0; i < buflen; i++)
	{

	   // lcd.print(buf[i]);
	   // lcd.print(" ");
	}


	//Serial.println("");
      //  digitalWrite(13, false);
      if ((char *)buf=="ciao") {
        mx=true;
       } else {
         mx=false;
         }
    }
    if (mx==true) {
      digitalWrite(10,1);
      } else {
        digitalWrite(10,0);
        }
      
}

ecco, quì nasce il problema... se io uso il display lcd, tutto ok, mi scrive ciao, ma quando comparo il messaggio "ciao" con quello arrivato dal TX, il led non si accende, e la variabile mx (booleana) non cambia stato.
ve ne sarei grato se riusciste ad aiutarmi...

Ciao, UP2

Ho risolto leggendo i vari buf 1 per 1...

ho modificato questo:

 if ((char *)buf=="ciao") {
        mx=true;
       } else {
         mx=false;
         }

con questo:

if (buf[0] == 'c' && buf[1] == 'i' && buf[2] == 'a' && buf[3] == 'o') {
	if (mx==false) {
   mx=true;
       } else {
         mx=false;
  }
}

Grazie comunque