Pages: [1]   Go Down
Author Topic: VirtualWire RF 433 - problemas com função  (Read 684 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

te falta o LOOP smiley-wink
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Aracaju, SE, Brasil
Offline Offline
Sr. Member
****
Karma: 4
Posts: 323
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se o código funcionava no loop e você apenas o moveu para uma função, não tem porque não funcionar.
Code:
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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 11
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Logged

São Paulo
Offline Offline
Jr. Member
**
Karma: 2
Posts: 76
Open your mind .
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
#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.
Logged

Arduino Duemilanove
Arduino Mega 2560  
Xbox 360

Offline Offline
God Member
*****
Karma: 12
Posts: 510
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Mas ainda falta o loop  smiley-razz
Logged

Pages: [1]   Go Up
Jump to: