Go Down

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

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


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.

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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy