(votre souci provient de if (buf[1] == '1') ➜ je vous laisse chercher)
Essayez ce code, peut-être ça vous donnera une indication
#include <VirtualWire.h>
void setup() {
Serial.begin(115200);
vw_set_rx_pin(12);
vw_set_ptt_inverted(true);
vw_setup(4000);
vw_rx_start();
}
void loop() {
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) {
Serial.println(F("Reçu: "));
for (i = 0; i < buflen; i++) {
Serial.print(F("indice: ")); Serial.print(i);
Serial.write('\t'); Serial.println(buf[i], HEX);
}
Serial.println(F("Fin de réception"));
}
}