ich habe zur Zeit ein Projekt mit einem LCD. Möchte für ein Menü eine Variable per Tastendruck hochzählen. Wenn ich den Taster kurz drücke soll sie einmal hochgezählt werden, drücke ich den Taster länger als 2-3 Sekunden soll die Variable schnell hochgezählt werden. Leider klappt das nicht wirklich
habe das mit einer While-Schleife probiert was an sich blöd ist weil er dann ja erst aktualisiert wenn ich den Taster loslasse und somit gar nicht sehe welchen Wert die gerade hat Variable hat.
habe das mit einer While-Schleife probiert was an sich blöd ist weil er dann ja erst aktualisiert wenn ich den Taster loslasse und somit gar nicht sehe welchen Wert die gerade hat Variable hat
Gut beobachtet. Statt Zusätzlich zur Flankenerkennung musst du dir nur die Zeit seit dem letzten Hochzählen merken und - wenn der Taster immer noch gedrückt ist - wieder eins mehr usw. Um diese Zeit abzuwarten ist eine while Schleife innerhalb von loop natürlich -wie immer- Mist weil unnötig kompliziert..
michael_x:
Zusätzlich zur Flankenerkennung musst du dir nur die Zeit seit dem letzten Hochzählen merken und - wenn der Taster immer noch gedrückt ist - wieder eins mehr usw. Um diese Zeit abzuwarten
Hi,
so ungefähr hatte ich mir das auch gedacht
Ich wollte das sobald ich den Taster drücke das ein Timer startet. Ist der abgelaufen und Taster immer noch LOW soll er schnell hochzählen. Durch die Flankenerkennung läuft die If abfrage, ob der Taster gedrückt ist nur einmal bis ich ihn loslasse, weswegen millis() nichts bringt. Oder besser gesagt ich bekomms nicht hin.
könntest du kein if statement mit +1 bei der variable programmieren?
sodass das arduino alle paar millisekunden checkt ob der taster gedrückt wird & wenn ya dann +1 dazugibt
verstehst du wie ich meine?
bin neu aber so würde ich es versuchen, kann ich auch machen wenn du willst
imho brauchst du die while nur raus geben in den Körper der Funktion und unter die Bedingung stellen, dass der Taster gedrückt ist - und vorhin auch gedrückt war. Dann noch ein paar Variablen den Scope erhöhen bzw. die richtigen nehmen, dann könnte es ca so aussehen:
Wenn du schon eine Funktion namens Tasterabfrage() hast, könnte die doch auch etwas zurückliefern (z.B. false wenn kein Taster gedrückt ist, oder true um einen neuen Tastendruck anzuzeigen oder zu simulieren)
Das eigentliche Problem ist übrigens dein delay(30); // schnell hochzählen .
Das in loop richtig auszuwerten überlasse ich dir.
Einer Funktion namens Tasterabfrage() sollte egal sein, welche Anzeige-Bibliothek verwendet wird und welche globale Variable evtl. zu verändern ist.
Dass diese Abfrage nur für einen bestimmten Taster funktioniert (und mit static Variablen auskommt), habe ich mal so gelassen. Aber Taster_gedrueckt sollte auch bedeuten, was der Name sagt.
Wenn man combie ist, verwendet man natürlich combie-libraries. Erstmal geht's zur Not auch ohne.
Wenn man combie ist, verwendet man natürlich combie-libraries.
Immerhin hat das Ich min. 5 Jahre intensiv beobachtet, welche Pattern am häufigsten zum Einsatz kommen, diese dann, nach und nach, benannt und in eine Libsammlung gegossen.
Erstmal geht's zur Not auch ohne.
Sicherlich dutzende alternative Wege, es gibt.
Dinge, welche ich nicht so mag:
geschachtelte if()
komplexe Bedingungen in if()
statische Variablen
offen mitgeschleppte Zustände
Das mit den komplexen if(komplexe Bedingung) else Schachtelungen durchdringe ich nicht, oder nur widerwillig.
Vermutlich bin ich zu doof dafür. :o
Bin ja sogar zu blöd, um im dunklen Angst zu haben.
Hast du die Bibliotheken selber geschrieben oder dich nur danach benannt?
Hatte schon "Vorbilder", und auch Kommunikation im Forum hier, aber ja, selber geschrieben.
Meinen Dank an der Stelle.
Mein Name kommt von "Computer Bienen".
Denn dank der Bienen habe ich begriffen, wie man Computer "richtig und wahrhaftig" programmiert.
Die haben es mir vorgelebt.
Auch: Danke!
In Dem Beispiel, wenn 'Taster_dauer' ungleich Null ist, wird der Wert 'REPEAT' zum Vergleich benutzt, sonst der Wert 'STARTVERZ'.
Wobei ich diese Werte irgendwie 'anders' genannt hätte - damit man sieht, daß Es Sich um Zeiten handelt.
REPEAT deutet zumindest nicht direkt auf ein Warten - meine Meinung
Ich meinte das ich Google besser finde. Wenn du was auf der ersten Seite nicht verstehst gehst du einfach auf die nächste und so weiter. Kannst du bei einem Buch nicht.Hat sich die Letzten Jahre gut bewehrt
Klingelprofi:
Ich meinte das ich Google besser finde. Wenn du was auf der ersten Seite nicht verstehst gehst du einfach auf die nächste und so weiter. Kannst du bei einem Buch nicht.Hat sich die Letzten Jahre gut bewehrt
TIPP: Ein Buch hat Seiten, die meistens sogar numeriert sind. Funktioniert auch ohne Strom.
... oder ohne Innanetz ... hatte Gestern eine halbe Stunde Router und Modem dann doch noch überreden können, doch noch Mal miteinander zu schwätzen ... hegte schon einen Groll gegen 'Die da Oben' wegen der Reduzierung auf Null
Da hast Du dann auch 'nur noch' die Datenblätter, Die man Sich so im Laufe der Jahre angehamstert hat
gregorss:
TIPP: Ein Buch hat Seiten, die meistens sogar numeriert sind. Funktioniert auch ohne Strom.
Daran ist es wahrscheinlich gescheitert
Versteh aber das Problem nicht. Warum sind alle so abgeneigt davon man mit dem Internet lernt?
Meine Noten haben mir die letzten Jahre gezeigt, dass es anscheinend doch ganz gut klappt
Klingelprofi:
Versteh aber das Problem nicht. Warum sind alle so abgeneigt davon man mit dem Internet lernt?
Meine Noten haben mir die letzten Jahre gezeigt, dass es anscheinend doch ganz gut klappt
Meine Meinung dazu ist ein bisschen diffus. Und ich arbeite nun mal gerne mit Papier. Und ich erinnere mich an jemanden, der mit mir eine Wohnung besichtigen wollte. Vor der Haustür, die eine RIESENGROSSE „46“ zeigt, wurde ich von einem ankommenden Mitbesichtiger gefragt, ob das die Nr. 46 sei - sein Navi ist sich da nicht sicher ...