Chrisblueeyes:
Getestet und daran verzweifelt, die schaltzeit durch erneutes drücken zu erhöhen.
brauch ich da ein array worin die anzahl der tastenanschläge gespeichert werden oder irre ich da?
Richtig.
Das funktioniert gerade wie ein Treppenhausautomat: Drücken läßt das Licht 5min brennen. 2* drücken ändert auch nix.
Im Code:
Wenn die Taste gedrückt wird, merkt er sich den Zeitpunkt.
if (digitalRead(Taste_Pin) == LOW){ // wenn Taste gedrückt
T_Taste = millis(); // Zeitpunkt merken.
Dann prüft er ständig, ob seit dem Zeitpunkt des Drückens mehr Zeit als T_Leucht vergangen ist,
if ( millis() - T_Taste < T_Leucht){und schaltet entsprechend den Pin.
Wenn du nun pro Tastendruck die Zeit erhöhen willst, dann könntest du z.B. einfach noch eine Variable einführen. Nennen wir sie T_Zaehler.
Jedes mal, wenn die Taste gedrückt wird, wird T_Zaehler um eins erhöht.
Und bei der Abfrage, ob die Zeit schon rum ist, vergleichst du nicht mit der Zeit T_Leucht, sondern mit T_Leucht * T_Zaehler.
if ( millis() - T_Taste < T_Leucht*T_Zaehler){
Wenn die Zeit abgelaufen ist, und das Licht wieder aus, also im else-Zweig, mußt du T_Zaehler wieder auf Null setzen.
Das ist einfach, und das solltest du hinkriegen.
Wenns nicht geht, poste deinen Sketch und frage um Rat.
Gunther
P.S.:
michael_x:
Wenn es ihn stört, dass man die Taste evtl. mal eine halbe Sekunde lang drücken muss bis was passiert, soll er auch erstmal selber forschen und tüfteln, warum.
wenn das delay() im Seriellen Anzeigeteil weg ist, wird der Taster alle 3ms abgefragt. Das sollte reichen. Aber ich fürchte, dann kommt das Prellen zum tragen.