Temperatursollwert über 2 Taster ändern.

Temperatursollwert über 2 Taster ändern.

Hallo ich bin neu in der Welt des Arduino Programmierens.

Ich habe mir ein kleines Projekt ausgedacht, eine Temperaturregelung für einen Raum.

Ich habe schon ein LCD 16/2 angeschlossen und die aktuelle Temperatur wird angezeigt, zum testen ist ein poti angeschlossen um sie besser zum Test einzustellen.

Mein Problem ist das ich gerne die Solltemperatur über 2 Taster einstellen will, der Anfangswert sollte bei 20 liegen und in 0,1 oder 0,5 schritten verändert werden können.
Ich habe keine Ahnung wie ich das programmieren soll.

Wenn ihr mir da einen Ansatz geben könntet wie ich das anstellen kann wäre ich sehr dankbar.

Gruß Martin

Du könntest Dir die OneButton library ansehen. Die nimmt Dir nicht nur Debouncing ab, sondern auch noch Click, Longpress, Doubleclick ...

Das Prinzip ist aber:

  • Du hast die Temperatur in einer Variable
  • Wenn der Knopf gedrückt wird (Zustand eines Pins ändert sich, state != laststate), erhöhst oder erniedrigst Du die Variable.

Oder direkt die Beispiele Button und Debounce aus der IDE.

Anfangswert sollte bei 20 liegen und in 0,1 oder 0,5 schritten verändert werden können.

Speichere die Temperatur in Zehntel Grad als Integer. Dann kannst du immer 1 oder 5 addieren/substrahieren

Wäre es nicht "einfacher" den Temperaturwert mit einem Poti zu verstellen?
Nur mal als reine Interessensfrage.

Gibt es da irgendwelche Nachteile oder besondere Vorteile?
Stelle es mir nur angenehmer vor die Temperatur einfach "verdrehen" zu können

Ja über ein poti ist es einfacher, das hatte ich am Anfang so, allerdings wie es in meinen versuchsaufbau auch war ist die anzeige in den Kommastellen als gesprungen durch eine delay von 100 oder 200 nicht mehr so stark aber bei günstigen poti ( in meinem fall 10KOhm) kann es sein das der wert sich nicht so schön verändert.

Ich will durch den Aufbau mit 2 Taster es nicht einfacher machen sondern etwas an Erfahrung gewinnen.
und schöner sieht es auch auf der anzeige aus wen der wert fest steht.

über die "OneButton library" habe ich kurz geschaut, werde später nochmal genauer hinsehen aber es ist doch wohl mehr als ich benötige.

Vielleicht hat jemand schon mal was in der Richtung gemacht und würde mir ein Code Beispiel zeigen,
wert einer Variablen über Taster zu ändern.

Ja stimmt, das ist ein Argument.
Wobei, wenn nicht so viele Werte verlangt sind, ein Poti eigentlich gute Dienste tut meiner Meinung nach.
Also ich habe mal eins für eine Steuerung verbaut, allerdings waren da nur wenige Werte im Spiel.

Bei Temperaturen ist das natürlich was anderes.

Viel Spaß und Glück noch bei deiner Temperatursteuerung :slight_smile:

otter08:
Vielleicht hat jemand schon mal was in der Richtung gemacht und würde mir ein Code Beispiel zeigen,
wert einer Variablen über Taster zu ändern.

Siehe hier:

guntherb:
Oder direkt die Beispiele Button und Debounce aus der IDE.

Nach einem Ereignis eine Variable zu ändern ist doch nicht das Problem, oder??

otter08:
über die "OneButton library" habe ich kurz geschaut, werde später nochmal genauer hinsehen aber es ist doch wohl mehr als ich benötige.

Wenn Du Dich bei größeren Änderungen nicht totklichen willst, sondern gedrückt halten, ist das genau, was Du benötigst.

otter08:
Vielleicht hat jemand schon mal was in der Richtung gemacht und würde mir ein Code Beispiel zeigen,
wert einer Variablen über Taster zu ändern.

void loop() {
  int reading = digitalRead(buttonPin);
  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == HIGH) {
        Solltemperatur += 1;
        Serial.print("Solltemperatur: ");Serial.println(Solltemperatur);
      }
    }
  }
  lastButtonState = reading;
}

Code aus Beispiel Debounce; 2 Zeilen neu

Ich sagte doch, du sollst dir die Beispiele mal ansehen

Klaus_ww:
Siehe hier:

Nach einem Ereignis eine Variable zu ändern ist doch nicht das Problem, oder??

Doch das ist leider mein Problem, wie gesagt ich habe erst angefangen.

Aber ihr habt mir jetzt Möglichkeiten gezeigt, wo ich sehr dankbar bin und das sollte mein Problem vielleicht schon lösen.

Vielen dank
Gruß
Martin

@Jurs: An solchen Sachen sind wir immer interessiert.

Gruß Tommy

Hallo Jurs,

danke für den Code. Ich vermute, die Buttons sind dann hardwareentprellt (RC-Glied)

Gruß Tommy

Danke.

Gruß Tommy

Wenn der Themenstarter sich mal dazu äußert, welches bei ihm die niedrigste und höchste einstellbare Temperatur sein soll, könnte ich auch dafür ein kleines Demoürogramm machen.
Bisher hat er ja nur geschrieben, dass die Einstellung bei 20 Grad starten und in 0.1 oder 0.5 Grad Schritten erfolgen soll, aber nicht, welche Temperaturgrenzen es für den Einstellbereich gibt.

[/quote]

Hallo jurs,

Entschuldige bitte das ich mich erst jetzt melde.

Eine Verstellung von 5 bis 35 C sollte mehr als genug sein, in 0,5 C schritten kleiner macht wahrscheinlich kein sinn.
Ein kleines Demo Programm von dir würde ich sehr dankbar annehmen.

Aktuell habe ich noch nicht an der Programmierung weiter gemacht, denke aber das ich das zeitnah machen werde.

Danke an alle !!!

Gruß Martin

weniger als 200 Tastendrücke, um den Wert von 5.0 auf 35.0 zu verändern

Klingt erschreckend :slight_smile:

Mal drüber nachgedacht, dass man eine Taste gedrückt hält, und der Wert sich dann erst langsam, dann schneller, ändert?