Hallo, ich habe mal eine Verständnisfrage. Ich möchte einen Taster abfragen und festellen wie oft er pro Minute gedrückt worden ist und ein dementsprechendes PWM Signal auf eine LED geben, also je schneller gedrückt wird desto heller die LED. Meine Idee ist nun den timer0 des tiny13 im Fast-PWM Modus laufen zu lassen und dann in OCR0A den Wert für die Tastendrücke zu schreiben. Allerdings weiß ich jetzt nicht wie ich die Anzahl der Tastendrücke pro Minute umsetzen soll ? Soll ich mir den ersten Zeitpunkt des Tastendrucks merken und dann die Differenz zum nächsten bilden ? Und wie sieht das mit der Entprellung aus ? Ich denke das der maximale Wert so bei vier Schaltvorgängen pro Sekunde liegen soll und dann die LED voll leuchtet. Ansatz richtig oder habe ich was wesentliches übersehen ? Danke.
:
Verschoben durch Moderator
lll schrieb: > Soll ich mir den ersten Zeitpunkt des Tastendrucks merken und dann die > Differenz zum nächsten bilden ? Darauf läuft es hinaus, wenn du es so machen willst. > Und wie sieht das mit der Entprellung aus ? Um die wirst du nicht herumkommen. Wenn du ein System auf Tastendrücken (im Gegensatz zu "ist die Taste gedrückt oder nicht") aufbaust, brauchst du eine Entprellung. > Ich denke das der maximale Wert so bei vier Schaltvorgängen pro Sekunde > liegen soll und dann die LED voll leuchtet. > Ansatz richtig oder habe ich was wesentliches übersehen ? Man kann das so machen. Allerdings: Du musst nach dem Tastendrücken 1 Minute als Benutzer warten, ehe sich was an der LED tut und du überprüfen kannst ob du die richtige Anzahl gedrückt hast. Und 1 Minute ist lang, wenn man auf etwas wartet. Das bessere System wäre es, mit jedem Tastendruck sofort die LED auf einen helleren Wert einstellen. D.h. du drückst einmal und die LED geht auf Stufe 1. Drückst du nochmal geht die LED auf Stufe 2. usw. Beim zb 8-ten Tastendruck geht die LED dann wieder auf Stufe 0 zurück. Meistens macht man es allerdings so, dass sich die Helligkeit kontinuierlich erhöht, SOLANGE eine Taste gedrückt ist. D.h. du drückst die Taste nieder und während die Taste gedrückt ist, erhöht sich die Helligkeit laufend. Hat man 2 Taster, dann erhöht der eine und er andere erniedrigt. Hat man nur 1 Taste, dann kann man es zb so machen, dass nach maximaler Helligkeit die Helligkeit wieder zurückgesetzt wird und das Spiel von vorne losgeht. Dafür brauchst du dann keine Entprellung. Diese Funktionalität lässt sich ziemlich einfach erreichen.
Karl Heinz Buchegger schrieb: > Allerdings: Du musst nach dem Tastendrücken 1 Minute als Benutzer > warten, ehe sich was an der LED tut und du überprüfen kannst ob du die > richtige Anzahl gedrückt hast. Und 1 Minute ist lang, wenn man auf etwas > wartet. Danke erstmal für Deine Zeit. Das ganze soll ein Spiel werden bei dem jemand halt die LED durch entsprechendes drücken der Taste auf einen zuvor "festgelegten" Helligkeitswert bringen soll. Also eine Art Geschicklichkeitsspiel (und wenn die LED zu dunkel oder hell ist gibt's 'ne neue Runde räusper :-P ). Schön also brauche ich zwei Variablen in denen ich den vorherigen und den aktuellen Timestamp ablege, nur müßte ich ja auch noch mitteln falls mal jemand den Taster nicht 100%ig erwischt ... Das mit der einen Minute ist auch absichtlich damit jemand doch drücken muß halt nach einer Minute, da dachte ich dann das die LED einmal voll angeht :-P Ist nur 'ne Idee ;-) Hm, also entprellen dann innerhalb der TimerOverflow-ISR und grob eine achtel Sekunde als Maß ? Soll so einfach wie möglich werden: [CR2032] | [Tiny13]---[1k]---[LED] | [Taster]
so einfach wie möglich wäre es wenn sich Jeder gleich 10 Kurze bestellt und Die dann ohne Spielkram hintergiesst. Spart Zeit und gekotzt wird sowieso.
Frank L. schrieb: > so einfach wie möglich wäre es wenn sich Jeder gleich 10 Kurze bestellt > und Die dann ohne Spielkram hintergiesst. Spart Zeit und gekotzt wird > sowieso. > > > > Beitrag melden Bearbeiten Löschen Klar und bei Tekila weißte dasde genug hast wenn Du das Salz durch die Nase schnupfst, so wie bei ERGO üblich :-P Immer diese "Moralapostel" :-P Wenn ich nun einfach 'nen nervigen Brummer für untern Tisch basteln wollte hättest Du das sicherlich nicht gepostet ...
Die PWM-Frequenz ist doch während das Spiel läuft fest. Dein Timerinterrupt kann der Overflow-Interrupt sein. Ablaufsteuerung wird in einer kleinen Statemachine in der Main gemacht. Als "You lose" oder "You win" könnte man an den zweiten noch freien OCR-Ausgang einen Piezopiepser oder kleinen Lautsprecher hängen. Aber nicht vergessen, die PWM-Frequenz nach abspielen der Sieges- oder Niederlage-Melodie nachher wieder zurückzustellen.
Das beste wäre, erstmal eine Spielanleitung zu schreiben, die auch ein anderer versteht. Die ist dann quasi das Pflichtenheft und damit ist das eigentliche Programmieren dann ganz einfach. Allgemein: Man kann natürlich PWM und Timerinterrupts zusammen benutzen. Und damit dann Entprelltakt (10ms) und Minutentakt erzeugen. lll schrieb: > falls mal jemand den Taster nicht 100%ig erwischt ... Wie soll das gehen? Ein Taster kann das nicht unterscheiden. Entweder der Kontakt schließt oder schließt nicht. Oder Du nimmst keinen Taster, sondern eine Drucksensor und gibst dessen Spannung auf den ADC. Peter
Peter Dannegger schrieb: > Das beste wäre, erstmal eine Spielanleitung zu schreiben, die auch ein > anderer versteht. Nachdem ich mir das Eröffnungsposting nochmal durchgelesen habe, keimt in mir ein Verdacht für die gedachte Funktion auf. Kennt noch wer das PC-Game 'Summer Games' von vor 20 Jahren. Man musste wie ein wilder auf der Tastatur eine Taste beackern. Je schneller man auf die Tastatur einhämmerte, desto schneller rannte der 100m-Läufer (ok, es war ein wenig komplizierter. Man musste auch den richtigen Takt finden). Ich denke er will was ähnliches machen. Auf einen Taster einhämmern und je schneller man hämmert, desto heller leuchtet eine LED. Wer es in der Runde auf die hellste/dunkelste LED bringt, muss/darf was tun. Ich denke, das kriegt die PeDa Entprellung gerade noch hin. So schnell ist keiner.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.