int DHT_get_moist(void)
{
int moist = round(dht.readHumidity());
return(moist);
}
int DHT_get_temp(void)
{
int temp = round(dht.readTemperature());
return(temp);
}
sprintf(string, "- Luftfuktighet %d - Temp %d C - ", DHT_get_moist(), DHT_get_temp());
Sensor : 1 (Outside 1) Temp : 0 CTillbaks till ritbordet.
74 seconds since last update. This took 3.00 milliseconds to execute.
if(TempC_5 < 0) Transmit_Data((int) round(TempC_5), 5, 0);Och konvertera värdet att alltid vara ett positivt.
else Transmit_Data((int) round(TempC_5), 5, 1);
void Transmit_Data(int send_data, int sender_id, int negpos)Enklaste sättet att konvertera till minusvärde måste vara:
{
sprintf(Send_Temp, "%d%d%d", sender_id, negpos, abs(send_data));
vw_send((uint8_t *)Send_Temp, strlen(Send_Temp));
vw_wait_tx();
}
if(Real_NegPos == 0) Real_Temp = Real_Temp - Real_Temp - Real_Temp;Så nu visas korrekt plus/minus.
Sensor : 1 (Outside 1) Temp : -4 CEn liten bieffekt blev att jag kan både få "+0" och "-0".
74 seconds since last update. This took 3.00 milliseconds to execute.
char* Sensor_Name[] = {"Hell", "Outside 1", "Outside 2", "Cellar", "Hallway",
"Attic", "Pump Out", "Pump In"};
---
Serial.print(Sensor_Name[Real_Sensor]);
Sensor : 6 (Pump Out) Temp : 47 CMen efter 77 sekunder så hade alla givarna rapporterat in. Så det är väl ok antar jag.
41 seconds since last update. This took 1.00 milliseconds to execute.
1Nästa försök gick inte lika bra.
1
1
1
0
1
1
Total run time 75 seconds.
1
1
1
1
1
1
1
Total run time 77 seconds
Inte nästa heller.. Fast jag ökat sänd intervallen till 4 sekunder.
1
1
1
1
1
1
1
Total run time 814 seconds.
1
1
1
1
1
1
1
Total run time 317 seconds.
sprintf(Send_Temp, "%d-%d", sender_id, send_data);Som kunde ge "1-20". Så var det enklare att skicka allt som ett enda heltal.
sprintf(Send_Temp, "%d%d", sender_id, send_data);Vilket ger "120" som är enklare att omvandla. Lär ju aldrig ha mer än 9 givare totalt.
#include <VirtualWire.h>Kommentera gärna.
#define RX_PIN 4
long lasttime = 0;
void setup()
{
Serial.begin(9600);
vw_set_rx_pin(RX_PIN);
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_rx_start();
}
void loop()
{
unsigned long currenttime = millis();
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
char Sensor1CharMsg[5] = "", Value[5] = "", Sensor[5] = "", Temp[5] = "";
int Real_Temp = 0, Real_Sensor = 0, i = 0, Sensor1Data = 0;
long totaltime = (currenttime - lasttime) / 1000;
lasttime = millis();
for (i = 0; i < buflen; i++) Sensor1CharMsg[i] = char(buf[i]);
Sensor1CharMsg[buflen] = ' ';
Sensor1Data = atoi(Sensor1CharMsg); // Gör ett heltal av all mottaget data.
itoa(Sensor1Data,Value,10); // Gör en sträng av mottaget data.
sprintf(Sensor, "%c ", Value[0]); // Filtrera ut vilken givare som skickat data.
sprintf(Temp, "%c%c ", Value[1], Value[2]); // Filtrera ut tempen.
Real_Temp = atoi(Temp); // Gör om Tempen till ett heltal.
Real_Sensor = atoi(Sensor); // Gör om givare till ett heltal.
Serial.print("Sensor : ");
Serial.println(Real_Sensor);
Serial.print("Temp : ");
Serial.print(Real_Temp);
Serial.println(" C");
Serial.print(totaltime);
Serial.println(" seconds since last update.");
Serial.println("");
}
}
Transmit_Data((int) round(TempC_1), 1);
Transmit_Data((int) round(TempC_2), 2);
Transmit_Data((int) round(TempC_3), 3);
Transmit_Data((int) round(TempC_4), 4);
Transmit_Data((int) round(TempC_5), 5);
#include <VirtualWire.h>Arduinon postar värden varje minut, så jag verkar missa en del.
#define RX_PIN 4
int times = 0;
long lasttime = 0;
void setup()
{
Serial.begin(9600);
vw_set_rx_pin(RX_PIN);
vw_set_ptt_inverted(true);
vw_setup(2000);
vw_rx_start();
}
void loop()
{
unsigned long currenttime = millis();
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen))
{
char Sensor1CharMsg[4] = "";
long totaltime = (currenttime - lasttime) / 1000;
int i = 0, Sensor1Data = 0;
lasttime = millis();
for (i = 0; i < buflen; i++) Sensor1CharMsg[i] = char(buf[i]);
Sensor1CharMsg[buflen] = ' ';
Sensor1Data = atoi(Sensor1CharMsg);
Serial.print("Temp : ");
Serial.print(Sensor1Data);
Serial.println(" C");
if(times)
{
Serial.print(totaltime);
Serial.println(" seconds since last update.");
}
times++;
}
}