Go Down

Topic: VirtualWire RF 433 - problemas com função (Read 739 times) previous topic - next topic

itape_alan

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

Mortis


itape_alan

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

LegendBR

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.

Mortis

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

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.

itape_alan

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


ViniciusTech

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

Code: [Select]
#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.
Arduino Duemilanove
Arduino Mega 2560  
Xbox 360

Mortis


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


Mas ainda falta o loop  :P

Go Up