Ich gehe mal davon aus, dass dein Dreipunktregler mit festen Sollwerten schon funktioniert. Die Einstellung der Sollwerte würde ich in etwa so realisieren:
int ButtonPlus = 2;
int ButtonMinus = 4;
int ButtonSet = 3;
int Sollwert1 = 20;
int Sollwert2 = 25;
boolean SetSW1 = false;
boolean SetSW2 = false;
unsigned long Zeitstempel;
void setup(){
Serial.begin (9600);
pinMode (ButtonPlus, INPUT_PULLUP);
pinMode (ButtonMinus, INPUT_PULLUP);
pinMode (ButtonSet, INPUT_PULLUP);
}
void loop (){
if (digitalRead(ButtonSet)==LOW && SetSW1==false && SetSW2==false){
SetSW1 = true;
Zeitstempel = millis();
Ausgabe();
delay (200);
}
if (digitalRead(ButtonSet)==LOW && SetSW1==true && SetSW2==false){
SetSW2 = true;
SetSW1 = false;
Zeitstempel = millis();
Ausgabe();
delay (200);
}
if (digitalRead(ButtonPlus)==LOW){
if (SetSW1==true){
Sollwert1++;
Ausgabe();
delay (200);
}
if (SetSW2==true){
Sollwert2++;
Ausgabe();
delay (200);
}
}
if (digitalRead(ButtonMinus)==LOW){
if (SetSW1==true){
Sollwert1--;
Ausgabe();
delay (200);
}
if (SetSW2==true){
Sollwert2--;
Ausgabe();
delay (200);
}
}
if (millis()-Zeitstempel>3000){
SetSW1 = false;
SetSW2 = false;
}
}
void Ausgabe(){
Serial.print (SetSW1);
Serial.print (" SW1: ");
Serial.print (Sollwert1);
Serial.print (" ");
Serial.print (SetSW2);
Serial.print (" SW2: ");
Serial.println (Sollwert2);
}
Dabei gibt es noch einige Verbesserungen, die man einpflegen könnte und auch sollte. Das wäre vor allem das Entprellen der Taster, ich habe hier einfach mit einem delay gearbeitet. Weiterhin sollte man noch die eingestellten Sollwerte auf ihre Gültigkeit prüfen: SW2 muss immer größer sein als SW1, beide Werte dürfen nicht negativ werden usw.. Günstig wäre es auch die Sollwerte im Eeprom zu speichern, dass die nach einem Stromausfall auch wieder die richtigen Daten vorliegen. Die Ausgabe müsste selbstverständlich auf dein LCD angepasst werden, selbst lasse ich das ja nur im seriellen Monitor anzeigen.
Ich bin jetzt einfach davon ausgegangen, dass dein Dreipunktregler ansonsten schon funktioniert und habe den nicht implementiert.
Ansonsten solltest du dich nicht so bedeckt halten und ruhig deinen bisherigen Code posten.
