Hi
Habe ein Problem mit meinen Sensordaten.
Habe 3 Ds18b20 diese per DeviceAddress zugeteilt.
Jetzt hab ich das Problem das immer mein Display unter Templinks mir den wert von TempFilter anzeigt.
Was mach ich da falsch. hab schon mehrere versuche durch ausm Forum hier un div. Websiten.
Hier mal mein Code
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#include <DallasTemperature.h>
//Oled
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
//Temperatur
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress linksThermometer = {0x28, 0xFF, 0xD, 0xFF, 0x90, 0x15, 0x3, 0x96};
DeviceAddress rechtsThermometer = {0x28, 0xFF, 0xE7, 0x58, 0x91, 0x15, 0x1, 0xC9};
DeviceAddress filterThermometer = {0x28, 0xFF, 0x75, 0x50, 0x52, 0x16, 0x3, 0xBF};
//Device Address: 28FFE758911501C9
//--------------------------------T E M P E R A T U R - M O D U L E--------------------------------------
//double tempLinks = 0;
//double tempRechts = 0;
//double tempFilter =0;
//-------------------------------- Nachfüllanlage ---------------------------
const int N_Sensor = 4;
int liquidSensorValue = 0;
const int FuelPin = 9;
//-------------------------------- Wasserstand -------------------------------
const int W1_Sensor = 5;
int liquidSensorValue1 = 0;
const int W2_Sensor = 11;
int liquidSensorValue2 = 0;
//--------------------------------Nachfüllanlage On/Off-----------------------
const int Schalter = 7;
int Schalter_1 =0;
//--------------------------------------------------------- Relais Ausgänge -----------------------------------------------
const int Relais0 = 8;
//-------------------------------- MILLIS für Tempmesseung --------------------------------
unsigned long previousMillis = 0; // speichert wie viele Sekunden seit derletzten Änderung vergangen sind
unsigned long interval = 10000 ; // Interval zwischen zwei Änderungen 300000 = 5min
void setup()
{
Serial.begin(9600);
//Oled
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//display.display();
//Thermometer
sensors.begin(); // Start up the DS18B20 Temp library
sensors.setResolution(linksThermometer, 9);
sensors.setResolution(rechtsThermometer, 9);
sensors.setResolution(filterThermometer, 9);
if (!sensors.getAddress(linksThermometer, 0)) Serial.println("Unable to find address for Device 0");
if (!sensors.getAddress(rechtsThermometer, 1)) Serial.println("Unable to find address for Device 1");
if (!sensors.getAddress(filterThermometer, 2)) Serial.println("Unable to find address for Device 2");
//Pinout
pinMode(N_Sensor, INPUT_PULLUP); //Filter becken wasserstand
pinMode(W1_Sensor, INPUT_PULLUP); //Linkes becken wasserstand
pinMode(W2_Sensor, INPUT_PULLUP); //Rechtes becken wasserstand
pinMode(Schalter, INPUT_PULLUP); //Schalter
pinMode(FuelPin, OUTPUT);
pinMode(Relais0, OUTPUT);
//digitalWrite(Relais0, LOW);
//digitalWrite(FuelPin, LOW);
}
void loop()
{
liquidSensorValue = digitalRead(N_Sensor);
liquidSensorValue1 = digitalRead(W1_Sensor); //Links
liquidSensorValue2 = digitalRead(W2_Sensor); //Rechts
Schalter_1 = !digitalRead(Schalter);
//Display();
if (millis() - previousMillis >= interval) {
previousMillis = millis(); // aktuelle Zeit abspeichern
sensors.requestTemperatures(); // Send the command to get temperatures
float tempLinks = sensors.getTempC(linksThermometer);
float tempRechts = sensors.getTempC(rechtsThermometer);
float tempFilter = sensors.getTempC(filterThermometer);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(30,0);
display.println("Temperaturen");
// display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,10);
display.println("Links Rechts Filter");
display.setTextColor(WHITE);
display.setCursor(0,20);
display.println(tempLinks);
display.setCursor(42,20);
display.println(tempRechts);
display.setCursor(90,20);
display.println(tempFilter);
display.display();
//delay(1000);
//display.clearDisplay();
}
else
{
}
// Wasserstand Überwachung
if ((liquidSensorValue1 == 1 ) || (liquidSensorValue2 == 1 ))
{
digitalWrite (Relais0, HIGH); // Relais Aus
//Serial.print("Relais Aus");
}
else
{
digitalWrite (Relais0, LOW);
//Serial.print("Relais An");
}
// Nachfüllautomatik
if (Schalter_1 == HIGH )
{
// Serial.print("Schalter An");
if (liquidSensorValue == 0)
{
digitalWrite(FuelPin, HIGH);
// Serial.print("FuelPin on ");
}
else
{
digitalWrite(FuelPin, LOW);
// Serial.print("FuelPin off ");
}
}
else
{
// Serial.print("Schalter Aus");
}
}