Как отослать значение нескольких переменных через 433Mhz RF link kit

blackhand
Offline
Зарегистрирован: 13.10.2012

Снова у меня вопрос по 433Mhz RF link kit.

Значение одной переменной отсылаютс и принимаются на ура, но вот когда надо переслать значение двух... В общем, необходимо пересылать данные с 2-х датчиков - температуры и влажности.  Я продублировал в коде передатчика процесс, только переименовал в нём переменные и подставил значение д. влажности. Однако, приёмник принимает два одинаковых числа, то есть, значение 1 переменной.

Прошу помочь объяснить, как же отсылать значение 2-х переменных.

 

код передатчика:

#include <VirtualWire.h>
#include <dht11.h> 
dht11 mysensor; //
int mysensorPIN = 2; //

int lm335=0;
void setup()
{
    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
}

void loop()
{

 
 double val = analogRead(lm335);
  double voltage = val*5.0/1024;
double temp = voltage*100 - 273.15;


  int i;
  String data = String(i);
 char msg[50] ;
data.toCharArray(msg, data.length()+1);


digitalWrite(13, true); // 
  
 vw_send((byte*)msg, strlen(msg));
vw_wait_tx(); // 
    digitalWrite(13, false);
    delay(900);
    
   
    
  //вот тут начинается дубляж операции с новыми переменными  

 int chk = mysensor.read(mysensorPIN);//
    int a = (float)mysensor.humidity, mysensorPIN; //
    String data2 = String(a);//
    char msg2[40] ;//
    data.toCharArray(msg2, data2.length()+1);//
     vw_send((byte*)msg2, strlen(msg2));//
 vw_wait_tx(); // 
   digitalWrite(13, false);//
    delay(1000);//
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

Я "склеиваю" все в одну строку и ее отсылаю, вот как-то так:

(Максимально 28 символов, это где-то в VirtualWire ограничение).

RFtemp = String(RelayBRfanState) + String(WCtemp) + String(RelayLightState)
+ "/" + int(CurDistance) + "/" + int(MinDistance) + "/" + int(CurHumidity)
+ "/" + int(MaxHumidity) + "/" + int(CurAirLevel) + "/" + int(MaxAirLevel);
RFtemp.toCharArray(RFMessage,RFtemp.length()+1);
TXsuccess = vw_send((uint8_t *)RFMessage, strlen(RFMessage));
vw_wait_tx();

AnImAsHkO
Offline
Зарегистрирован: 04.12.2012

я за реализацию пакетного уровня...

 

blackhand
Offline
Зарегистрирован: 13.10.2012

А какого типа переменная RFtemp?

Araris
Offline
Зарегистрирован: 09.11.2012

blackhand пишет:

А какого типа переменная RFtemp?

String RFtemp;