Go Down

Topic: DS18B20 Wert in Variable Speichern (Read 550 times) previous topic - next topic

Instinkt

Hallo, ich habe hier mehrere Temperatur Sensoren die die ich Auslese, ich möchte jetzt eine if schleife machen wenn ein Wert überschriten ist leider weis ich nicht wie ich den Wert in eine Variable abspeichern kann.

Hier den code den ich benutze:

Quote
#include <OneWire.h>
#include <DallasTemperature.h>


#define ONE_WIRE_BUS 30                     // OneWire Bus Pin 8

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);


DeviceAddress Temp1 = {0x28, 0x9D, 0x09, 0x52, 0x04, 0x00, 0x00, 0x57};
DeviceAddress Temp2 = {0x28, 0x9F, 0xE5, 0x51, 0x04, 0x00, 0x00, 0x4A};
DeviceAddress Temp3 = {0x28, 0xE0, 0xF6, 0x51, 0x04, 0x00, 0x00, 0xC4};

void setup(void)
{
  Serial.begin(9600);
 
  sensors.begin();
  sensors.setResolution(Temp1, 10);          // Auflösung auf 10 bit
  sensors.setResolution(Temp2, 10);
  sensors.setResolution(Temp3, 10);
}

void printTemperature(DeviceAddress deviceAddress)
{
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Fehler bei Temperatur abfrage");
  } else {
    Serial.print("C: ");
    Serial.print(tempC);
  }
}

void loop(void)
{
 
  Serial.print("Temperatur abfrage...\n\r");
  sensors.requestTemperatures();
 
  Serial.print("Temp1 ist: ");
  printTemperature(Temp1);
  Serial.print("\n\r");
  Serial.print("Temp2 ist: ");
  printTemperature(Temp2);
  Serial.print("\n\r");
  Serial.print("Temp3 ist: ");
  printTemperature(Temp3);
  Serial.print("\n\r");
  Serial.print("\n\r\n\r");
}

uwefed

Ich verstehe Deine Frage nicht, Im Sketch wird das ja schon gemacht. Du mußt nur die richtigen Werte reinschreiben.

Code: [Select]
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Fehler bei Temperatur abfrage");
    }


Grüße Uwe

Instinkt

wenn ich jetzt aber eine if schleife machen möchte funktioniert das nicht...

z.B.

Quote

if (Temp1 > 20)
{ digitalWrite(Temphoch,HIGH); }
else
{ digitalWrite(Temphoch,LOW); }

maverick1509

Hallo,
woher weißt du, das es nicht funktioniert?
was ist denn Temphoch, wo hast du das im Code oben deklariert?
Oder hab ich was im Code übersehen?
gruss

MaFu


wenn ich jetzt aber eine if schleife machen möchte funktioniert das nicht...

z.B.

Quote

if (Temp1 > 20)
{ digitalWrite(Temphoch,HIGH); }
else
{ digitalWrite(Temphoch,LOW); }


Das kann so auch nicht funktionieren.
"Temp1" ist ja die Geräteadresse, die Temparatur steht in "TempC".
_______
Manfred

Go Up