Das ist wirklich etwas offtopic, ich hoffe aber jemanden zu finden, der
ein ähnliches Problem gelöst hat.
Ich baue mit einem µC ein Gerät, bei dem man u.a. das Datum und die
Uhrzeit einstellen kann. Dazu stehen aher nur Cursor-Tasten und die
Bestätigung zur Verfügung. Links/Rechts wählt die Stelle
h10 -> h1 -> m10 -> m1 -> d10 -> d1 -> mon10 -> mon1 -> y10 -> y1
Das Jahrhundert kann nicht verstellt werden. Neben dem -> gibts
natürlich auch das <- das zur vorherigen Stelle springt. Wenn man
hoch/runter drückt, wird die aktuelle Stelle jeweils verändert.
Interessant wird die Frage, wie man mit "ungültigen" Werten umgehen
soll. Wenn man h=18 hat und die aktuelle Stelle die Zehnerstelle ist,
würde als nächster Wert 28 entstehen. Das ist für eine Stunde nicht
sinnvoll. Ähnlich sieht es bei Tag und Monat des Datums aus. Wenn man
den Zehner des Monats von 4 erhöht, würde man auf den 14. Monat kommen,
was sicher nicht sinnvoll ist.
Was ist ein guter Ansatz für ein akzeptables Nutzerinterfaces für meinen
Wecker?
Möglichkeiten:
- Erhöhen von 4 auf 14 beim Monat nicht zulassen => Passiert nichts
- Springen aufs Maximum: 12
- Zulassen und beim Speichern am Ende ungültige Werte durchs Maximum
ersetzen, auf 1 setzen oder so
Grundsätzlich würde ich eher zu Möglichkeit 2 oder 3 raten, mit Tendenz
zu 2.
.. oder du erlaubst nur das Stellen des jeweiligen Wertes, also gar kein
rumfummeln an der 10er Stellen. Mit einer sanften Beschleunigung wenn
man die Taste gedrückt hält, ist auch das Stellen von Minuten und
Sekunden flott. Wie oft passiert die Stellerei denn?
Matthias Sch. schrieb:> .. oder du erlaubst nur das Stellen des jeweiligen Wertes, also gar kein> rumfummeln an der 10er Stellen.
Also nicht per Ziffer sondern per Wert (y,m,d,h,m)?
Hmm, bisher hatte ich kein Autorepeat bei den Tastern geplant. Ohne dem
müste man aber bis zu 30x drücken. Das will keiner.
> Mit einer sanften Beschleunigung wenn man die Taste gedrückt hält,
Ja, das wäre eine Möglichkeit, was aber auf zu Verwirrung führen kann,
wenn's zu schnell wird. Die Beschleunigung wird dann irgendwann zu Ende
sein müssen.
> Wie oft passiert die Stellerei denn?
Nun die Uhr läuft schon batteriegestützt. Der Quarz ist aber nicht in
einem Termostat. Also etwa wie eine billige Haushaltsuhr eben. Man
sollte aber die Zeit schon korrigieren können.
Johannes O. schrieb:> 1. Erhöhen von 4 auf 14 beim Monat nicht zulassen => Passiert nichts
Naja, das sieht dann so aus wie kaputt. Keine Reaktion ist nicht
erwünscht.
> 2. Springen aufs Maximum: 12> 3. Zulassen und beim Speichern am Ende ungültige Werte durchs Maximum> ersetzen, auf 1 setzen oder so
Das ist nicht so praktikabel. Wenn ich das beim Monat zulasse, weiß ich
nicht mehr, wor die Grenze beim Monat liegen soll.
>> Grundsätzlich würde ich eher zu Möglichkeit 2 oder 3 raten, mit Tendenz> zu 2.
Ja, sozusagen an den Poller fahren. Das wäre eine Möglichkeit, mir
minimalen Tasterdrücken den größten/kleinsten Wert zu erreichen.
Harper Blues schrieb:> Matthias Sch. schrieb:>> .. oder du erlaubst nur das Stellen des jeweiligen Wertes, also gar kein>> rumfummeln an der 10er Stellen.> Also nicht per Ziffer sondern per Wert (y,m,d,h,m)?>> Hmm, bisher hatte ich kein Autorepeat bei den Tastern geplant. Ohne dem> müste man aber bis zu 30x drücken. Das will keiner.
Welche Tastenroutinen benutzt du?
Mit den PeDa Routinen aus dem Entprellen-Artikel ist das
(Autorepeat) überhaupt kein Problem und funktioniert erstklassig. Sowohl
in der Programmierung als auch in der Bedienung. Auf jeden Fall besser
als dieser ganze 'du kannst die Einer nicht erhöhen, wenn sich dadurch
mit den zehner ein ungültiger Zustand ergibt' Ansatz (ich hätte jetzt
fast Unsinn gesagt - wer sowas einmal benutzen musste schmeisst das Ding
am liebsten in die nächste Ecke)
Oder was glaubst du, warum wir die anpreisen wie warme Semmeln?
Das in dem Artikel Entprellung (nicht Entprellen, der Link wurde
leider nicht gefunden) genannte Autorepeat klingt interessant. Ich werde
das mal ausprobieren.
Harper Blues schrieb:> Nun die Uhr läuft schon batteriegestützt. Der Quarz ist aber nicht in> einem Termostat. Also etwa wie eine billige Haushaltsuhr eben. Man> sollte aber die Zeit schon korrigieren können.
Das heisst, du stellst die Uhr einmal komplett und korrigierst dann die
Abweichung alle paar Monate oder so.
Harper Blues schrieb:> Hmm, bisher hatte ich kein Autorepeat bei den Tastern geplant. Ohne dem> müste man aber bis zu 30x drücken. Das will keiner.
Nee, aber Autorepeat ist heute in jedem Schmutzwecker eingebaut und wird
vom Bediener selbstverständlich angenommen. Da du sowohl hoch- als auch
runterstellen kannst, reicht ein 2-stufiges Autorepeat mit Sicherheit
aus, bei dem nach dem ersten Tastendruck länger gewartet wird, und dann
im 1/2 Sekundentakt wiederholt wird.
Ich habe einen Wecker (mit Autorepeat), der zaehlt bei Erreichen von x0
oder x5 in 5er Schritten weiter. Das finde ich recht praktisch und
schnell.
zB. von 18 auf 43 : gedrückt halten 18 19 20 25 30 35 40 loslassen und 3
* kurz drücken 43