VirtualWire RF 433 - problemas com função

Boa noite,
Estou testando o RF 433 em dois arduino Uno, um transmiter e outro reciver, com os exemplos padrão da classe funcionou perfeito.

Para o meu projeto, imaginei em colocar o codigo do exemplo padrão do reciver em uma função e chama-lo em determinadas partes do codigo apenas.

Ai que surge o problema, em função não consegui fazer ele funcionar. não retorna nada.

#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round

String c;

void setup()
{
c = String("");
Serial.begin(9600); // Debugging only
Serial.println("setup");

// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec

vw_rx_start(); // Start the receiver PLL running
}

String radio()
{
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++)
{
Serial.print(buf*, HEX);*

  • Serial.print(" ");*
    _ c = c + buf*;_
    _
    }_
    _
    Serial.println("");_
    _
    digitalWrite(13, false);_
    _
    }_
    _
    return c;_
    _
    }*_
    O pior, que não faz nem o Serial.print dentro do if.... nem diz o Got.
    Alguem ja passou por isto, ou pode me dizer um caminho para eu estudar, ou mesmo se isto é possivel ? Obrigado

te falta o LOOP :wink:

Imaginei isto, mas eu gostaria de trabalhar como função , no loop eu chamo a funcao radio(), ele não funciona.

Então posta o resto do código, com o loop chamando a função radio. E coloca o código com entre [code][/code] (sem asterisco), para ficar melhor de ler.

Se o código funcionava no loop e você apenas o moveu para uma função, não tem porque não funcionar.

void loop(){
  radio();
}

você fez o acima e não funcionou? Você recebe alguma mensagem de erro ao compilar ou compila e nada acontece com o arduino rodando?

Como o Legend sugeriu, posta o código completo para vermos o que se passa.

Sim chameio a função dentro do Loop , e não funcionou....

tenta trocar de String radio(); para void mesmo ;

#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round

String c;

void setup()
{
    c = String("");
    Serial.begin(9600);   // Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);    // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
}

void radio()
{
    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++)
   {
       Serial.print(buf, HEX);
       Serial.print(" ");
            c = c + buf;
   }
   Serial.println("");
        digitalWrite(13, false);
    }
    return c;
}

tenta assim.

ViniciusTech:
tenta trocar de String radio(); para void mesmo ;
(...)

Mas ainda falta o loop :stuck_out_tongue: