ich mache gerade ein Projekt, in dem ich verschiedene Schrittmotoren
ansteuere und deren Status in einem LCD Display ausgebe.
Jetzt möchte ich nur gleichzeitig noch die Sekunden mit im Display anzeigen.
dh wie lange ein Schrittmotor schon läuft.
Allerdings habe ich das zZ mit einem ... HIGH dann ein delay und denn ein LOW
an einem Digitalen Port gelöst.
Jetzt meine Frage, kann ich im Hintergrund einen Thread laufen lassen, welcher mir
Sekündlich im Display die Laufzeit aktualisiert ?
Da stellt sich zunächst eine grundsätzlich Frage:
hast du ein Uhrmodul wo du die Sekunden abgreifen willst oder aber möchtest du
anhand der Funktion millis() die Zeiten ausgeben.
gruß
geht beides, ich würde es erst einmal mit millis() versuchen, das delay würde ich auf jeden Fall raus nehmen,
denn da hälst du ja nur den Programmablauf an.
Willst du die Laufzeiten der einzelnen Motoren addieren und anzeigen (für jeden Motor) oder was genau soll
angezeigt werden?
Also ich seh' schon ... ich muss das ein wenig näher erklären :)
Das Projekt handelt sich um eine "Delux Duschsteuerung" - diese beinhaltet
zwei gesteuerte 2-Wege Zonenventile, einmal für Kaltwasser und einmal fürs
Warmwasser, und noch ein 2-wege Absperventil und 4 DS18B20.
Zu den Sensoren, einmal fürs kommende Wasser (kalt|warm) einmal unten
direkt nach dem Warmwasserspeicher und einmal vor dem Duschbrausenaustritt.
Zur Logik : Die Umwälzpumpe soll so lange laufen bis ich an der Dusche nahezu
die Temp vom Speicher hat, dann wird über das Mischkreuz berechnet wie ich meine
2 Zonenventile stellen muss dass die gewünschte Temp aus dem Hahn kommt.
Und wenn dann grob alles passt, wir das Absperventil geöffnet.
und als Addon, kann man dann pro Benutzer spezifische Werte hinterlegen, also Temp, Länge
und stärke des Wassers.
Und für die Länge, möchte ich halt im Display anzeigen, wie lange man schon duscht :)
ich glaube bei der Steuerung ist die Anzeige der Duschlänge noch das kleinste Problem.
Sobald das Absperrventil öffnet setzt du halt über millis() einen Startwert.
Bei jedem Durchlauf des Programms kannst du dann die verstrichene Zeit berechnen
zeit=(millis()-startwert)/1000 und du erhälst Sekunden, die du im Display ausgeben kannst.
Soweit der Grundgedanke, wenn noch was unklar ist frag.
gruß
Ja soweit ist mir das klar - nur es kann ja dann sein, dass es nachjustiert
und dass dann mit nem delay - und in der Zeit sehe ich ja dann nicht die Zeit ?
ich habe ne Funktion geschrieben
....
//Mischer zu bis auf in msek
int tmischer=14000;
....
///////////////////
// Auf / Zu //
///////////////////
int mischer(float warm_stellung, float kalt_stellung){
int twarm;
float prozent, warm_stellung_neu, temp_warm_stellung;
Diese Funktioniert soweit richtig gut - allerdings halt mit Delay :(
habe es gerade mal versucht umzustellen - oh man, dass läuft mal gar nicht so wie es soll.
Vor allem, weil sie die Werte für warm_stellung & kalt_stellung dauernd ändern können.
PS habe bis jetzt mal nur den Schrittmotor für das Warmwasser dran.