piggituX
06.02.2017, 18:01
Hi,
ich baue gerade eine Temperatur Überwachung und habe das Ganze nun erweitert um die Werte via RF433 MHz zu übertragen.
Vom Prinzip funktioniert das Ganze, aber irgendwie will es mir nicht gelingen, das die Werte sauber angekommen.
Ich benutze die VirtualWire Lib
funktionierter Sender-Programm-Auszug:
.
.
.
.
const char *toSend = "24,48,1009";
vw_send((uint8_t *)toSend, strlen(toSend));
vw_wait_tx();
delay(200);
.
.
.
.
funktionierter Empfänger-Programm-Auszug:
.
.
.
.
if (vw_get_message(buf, &buflen)) // check to see if anything has been received
{
int i;
for (i = 0; i < buflen; i++)
{
Serial.print((char)buf[i]); // the received data is stored in buffer
StrReceived[i] = char(buf[i]); // data to array
}
// split data into array sensorData
sscanf(StrReceived, "%d,%d,%d", & sensor[0], & sensor[1],& sensor[2]); // Converts a string to an array
// }
// for (int i = 0; i < maxSensorData; i++){ // nice output
// Serial.print("Sensor"); Serial.print(i); Serial.print(":");
// Serial.print(sensor[i]); Serial.print("\t");
// }
Serial.println(""); // linefeed
// reset variable StringReceived
// memset(StrReceived, 0, sizeof(StrReceived));
// delay(1000);
}
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Temperatur: ");
display.print(sensorData[0]);
display.println(" *C");
// display.display();
// display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Pressure: ");
display.print(sensorData[2]);
display.println(" hPa");
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Approx. Alt: ");
// display.print(bme.readAltitude(SEALEVELPRESSURE_HP A));
display.println(" m");
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Humidity: ");
display.print(sensorData[1]);
display.println(" %");
display.display();
delay(5000);
display.clearDisplay();
}
.
.
.
.
wenn ich nun den statischen String umbaue, um die Messwerte zu übertragen funktioniert es nicht mehr.
nicht funktionierter Sender-Programm-Auszug:
.
.
.
.
void Read_Sensor4() {
alt = (bme.readAltitude(SEALEVELPRESSURE_HPA));
//alt = 300;
itoa(alt, msg1, 10);
}
void Send_Data() {
//strcat(msg1, msg0);
//strcat(msg1, msg2);
//strcat(msg3, msg0);
//strcat(msg3, msg4);
strcat(toSend, msg1);
strcat(toSend, msg0);
strcat(toSend, msg2);
vw_send((uint8_t *)toSend, strlen(toSend));
vw_wait_tx();
delay(200);
.
.
.
.
ich sehe zwar im Monitor, das die Werte ausgelesen werden und, aber es kommt nichts mehr an... interessant je länger es läuft desto länger wird die Zeile ich weiss nur nicht ob es am Monitor liegt oder ob es ein Fehler ist. er bufft die irgendwie zwischen. jemand ähnlich Erfahrungen gemacht ? oder fehlt mir nur Programm Verständnis
cYa
ich baue gerade eine Temperatur Überwachung und habe das Ganze nun erweitert um die Werte via RF433 MHz zu übertragen.
Vom Prinzip funktioniert das Ganze, aber irgendwie will es mir nicht gelingen, das die Werte sauber angekommen.
Ich benutze die VirtualWire Lib
funktionierter Sender-Programm-Auszug:
.
.
.
.
const char *toSend = "24,48,1009";
vw_send((uint8_t *)toSend, strlen(toSend));
vw_wait_tx();
delay(200);
.
.
.
.
funktionierter Empfänger-Programm-Auszug:
.
.
.
.
if (vw_get_message(buf, &buflen)) // check to see if anything has been received
{
int i;
for (i = 0; i < buflen; i++)
{
Serial.print((char)buf[i]); // the received data is stored in buffer
StrReceived[i] = char(buf[i]); // data to array
}
// split data into array sensorData
sscanf(StrReceived, "%d,%d,%d", & sensor[0], & sensor[1],& sensor[2]); // Converts a string to an array
// }
// for (int i = 0; i < maxSensorData; i++){ // nice output
// Serial.print("Sensor"); Serial.print(i); Serial.print(":");
// Serial.print(sensor[i]); Serial.print("\t");
// }
Serial.println(""); // linefeed
// reset variable StringReceived
// memset(StrReceived, 0, sizeof(StrReceived));
// delay(1000);
}
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.print("Temperatur: ");
display.print(sensorData[0]);
display.println(" *C");
// display.display();
// display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Pressure: ");
display.print(sensorData[2]);
display.println(" hPa");
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Approx. Alt: ");
// display.print(bme.readAltitude(SEALEVELPRESSURE_HP A));
display.println(" m");
display.setTextSize(1);
display.setTextColor(WHITE);
display.print("Humidity: ");
display.print(sensorData[1]);
display.println(" %");
display.display();
delay(5000);
display.clearDisplay();
}
.
.
.
.
wenn ich nun den statischen String umbaue, um die Messwerte zu übertragen funktioniert es nicht mehr.
nicht funktionierter Sender-Programm-Auszug:
.
.
.
.
void Read_Sensor4() {
alt = (bme.readAltitude(SEALEVELPRESSURE_HPA));
//alt = 300;
itoa(alt, msg1, 10);
}
void Send_Data() {
//strcat(msg1, msg0);
//strcat(msg1, msg2);
//strcat(msg3, msg0);
//strcat(msg3, msg4);
strcat(toSend, msg1);
strcat(toSend, msg0);
strcat(toSend, msg2);
vw_send((uint8_t *)toSend, strlen(toSend));
vw_wait_tx();
delay(200);
.
.
.
.
ich sehe zwar im Monitor, das die Werte ausgelesen werden und, aber es kommt nichts mehr an... interessant je länger es läuft desto länger wird die Zeile ich weiss nur nicht ob es am Monitor liegt oder ob es ein Fehler ist. er bufft die irgendwie zwischen. jemand ähnlich Erfahrungen gemacht ? oder fehlt mir nur Programm Verständnis
cYa