Hi,
aus einem mir nicht erklärbarem Grund kann ich keine 2 timer gleichzeitig nutzen.
Wenn ich die timer (milli() etc.) gegen delay(500) tausche, dann funktioniert das zwar, aber der egt Wert wird natürlich nur alle 500ms aktualliesiert, das soll aber durchgehend der Fall sein.
Bitte seid nachsichtig mit meinen ganzen notizen die ich gemacht hab, ist für mich als gedankenstütze da es erstes Projekt ist und ich mich noch zurechtfinden möchte, sollte ich mal 2 Wochen nicht reingeschaut haben.
der Sketch schaut bis jetzt wie folgt aus:
const int led = (7); //Warn LED an Pin 7 mit 220 Ohm Wiederstand anschließen
const long interval1 = 1000;
int previousMillis1 = 0;
int previousMillis2 = 0;
unsigned long currentMillis1 = millis();
unsigned long currentMillis2 = millis(); //Wird das überhaupt benötigt? Weil ist ja das gleiche wie currentMillis1
void setup() {
Serial.begin(9600);
lcd.begin(16, 2); // Initieirt LCD
lcd.createChar(0,grad); // für das ° vor dem C
pinMode(7, OUTPUT); // Beschreibt pin 7 als Output-Pin
}
void loop() {
digitalWrite(7,LOW);
Serial.println(millis());
lcd.print("Abgas-Temperatur"); // lcd.print = Auf LCD anzeigen/ausgeben
int sensorValue = analogRead(A0); // int = Integra (ganze Zahl ohne Nachkommastelle), sensorValue = Name der Zahl, = analogRead(A0) = Wert der an Pin A0 eingelesen wird
float voltage = sensorValue * (5.0 / 1023.0); // Konvertiert das Eingangssignal von Pin A0 (0-1023) zu Spannung (Volt) 0-5V
int egt = voltage * (1250 / 5); // Konvertiert das 0-5V Signal zur Ausgabe 0-1250°C
lcd.setCursor(6, 1); // lcd.setCursor(5,1) = Anfang an Feld 5, Zeile 2 (Zeile 1=0 Zeile 2=1)
lcd.print(egt);
lcd.setCursor(10, 1);
lcd.write(byte(0)); // lcd.write(byte(0)) = Befehl um das byte (customChar °) auf LCD auszugeben
lcd.setCursor(11, 1);
lcd.print("C");
delay(150); // delay(150) = Verzögerung um 150ms damit das LCD nicht flackert
lcd.clear(); // lcd.clear() = alles auf LCD ausgegebenes löschen
if(egt >= 1000){
{
lcd.print("Abgas-Temperatur");
lcd.print(egt);
lcd.write(byte(0));
lcd.print("C");
digitalWrite(led, LOW);
if (currentMillis1 - previousMillis1 >= interval1) {
previousMillis1 = currentMillis2;}
lcd.clear();
delay(20);
lcd.print("!!!!ACHTUNG!!!!");
lcd.print(egt);
lcd.write(byte(0));
lcd.print("C");
digitalWrite(led, HIGH);
if (currentMillis2 - previousMillis1 >= interval1) {
previousMillis1 = currentMillis1;}
lcd.clear();
delay(20);
}
}
}