Guten Tag,
Ich habe das problem das mein lcd display bei einer if-abfrage nicht aktualisiert.
Es soll wenn das Arduino angeschlossen wird immer 4 Temperaturen anzeigen, die sich ständig aktualiesieren.
Hier mal der sketch:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>
#define ONE_WIRE_BUS 30 // Temperatursensor pin 30
LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Sensor1 = {0x28, 0xCD, 0x9B, 0xDA, 0x03, 0x00, 0x00, 0xF2};
DeviceAddress Sensor2 = {0x28, 0x1F, 0xA3, 0xDA, 0x03, 0x00, 0x00, 0xE2};
DeviceAddress Sensor3 = {0x28, 0x2D, 0xB9, 0xDA, 0x03, 0x00, 0x00, 0xA0};
DeviceAddress Sensor4 = {0x28, 0x37, 0x88, 0xDA, 0x03, 0x00, 0x00, 0x7D};
int backLight = 29;
int k1 = 31; //relais HIGH = Aus; LOW = An
int k2 = 32; //relais
int k3 = 33; //relais
int knopf1 = 34;
int buttonState = 0; //knopf
int buttonPushCounter = 0;
int lastButtonState = 0;
void setup() {
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH);
lcd.begin(20, 4);
sensors.begin();
pinMode(k1, OUTPUT);
pinMode(k2, OUTPUT);
pinMode(k3, OUTPUT);
pinMode(knopf1, INPUT);
digitalWrite(k1, HIGH);
digitalWrite(k2, HIGH);
digitalWrite(k3, HIGH);
}
void loop(){
sensors.requestTemperatures();
if (sensors.isConnected(Sensor1)){
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.print(sensors.getTempC(Sensor1));
lcd.print("C");
}else {
lcd.setCursor(0, 0);
lcd.print("T1:");
lcd.print("AUS ");}
if (sensors.isConnected(Sensor2)){
lcd.setCursor(0, 1);
lcd.print("T2:");
lcd.print(sensors.getTempC(Sensor2));
lcd.print("C");
}else {
lcd.setCursor(0, 1);
lcd.print("T2:");
lcd.print("AUS ");}
if (sensors.isConnected(Sensor3)){
lcd.setCursor(0, 2);
lcd.print("T3:");
lcd.print(sensors.getTempC(Sensor3));
lcd.print("C");
}else {
lcd.setCursor(0, 2);
lcd.print("T3:");
lcd.print("AUS ");}
if (sensors.isConnected(Sensor4)){
lcd.setCursor(0, 3);
lcd.print("T4:");
lcd.print(sensors.getTempC(Sensor4));
lcd.print("C");
}else {
lcd.setCursor(0, 3);
lcd.print("T4:");
lcd.print("AUS ");}
buttonState = digitalRead(knopf1);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
}
else {}
}
lastButtonState = buttonState;
if (buttonPushCounter % 2 == 0) {
digitalWrite(k1, HIGH);
} else {
programm1 ();
}
}
void programm1 (){
if (sensors.getTempC(Sensor1) >= 27){
digitalWrite(k1, HIGH);
delay(6000); //60000 millisekunden = 1min
digitalWrite(k2, LOW);
digitalWrite(k3, LOW);
}
else{digitalWrite(k1, LOW);
digitalWrite(k2, HIGH);
digitalWrite(k3, HIGH);}
}
So, nun funktioniert alles bis ich das programm1 starte und Sensor1 27° überschreitet, denn geht realis1 aus (HIGH= aus) und nach 6 sek. gehen k2 und k3 an. Aber in diesen 6 sek.(verkürtzter testwert)aktualisiert sich das display nicht, es ist wie eingefrorren.
Was muss ich machen damit das Display zu jeder zeit die aktuell gemessenen Temperaturwerte anzeigt.
Mfg
strohhirn