Eu estou usando um arduino uno para o transmissor (ligado ao pino 12) e o arduino mega como receptor (ligado ao pino 5).A minha ideia era enviar o valor "a", dois segundos depois o valor "A" e dois segundos depois voltaria para o "a", e ficaria nesse loop infinito, sendo que quanto o receptor recebesse o valor "A", um led deveria ser ligado. O problema é que no receptor apenas chega o valor 255, e eu não sei o que está acontecendo. Se puderem me ajudar a identificar o erro.
O módulo que estou usando é igual a esse. Já tentei inverter o pino de dados com o VCC, para ver se não tinha confundido, mas mesmo invertendo apenas chega o valor 255.
código transmissor:
#include <VirtualWire.h>
#define tmp 2000
char comando[1];
void setup() {
vw_set_tx_pin(12);
vw_setup(2000);
comando[0]='a';
}
void loop() {
if(comando[0]='a'){
comando[0]='A';
}else{
comando[0]='a';
}
//vw_send(uint8_t*buf, uint8_t*len)
vw_send((uint8_t) *comando,strlen(comando));
vw_wait_tx();
delay(tmp);
}
código receptor:
#include <VirtualWire.h>
#define led 11
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buftam = VW_MAX_MESSAGE_LEN;
void setup() {
vw_rx_start();
vw_set_rx_pin(5);
vw_setup(2000);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
//vw_get_message(uint8_t *buf, uint8_t *len);
if(vw_get_message(buf, &buftam)){
if(buf[0]=='A'){
digitalWrite(led, HIGH);
}else{
digitalWrite(led, LOW);
}
Serial.println(buf[0]);
}
}