Hallo zusammen, Ich hab da ein Problem mit meinem Taster. MIt dem Taster starte ich einen Vorgang bei dem ich einen Motor anschalte und der dann über einen Umdrehungszähler zurückzählt (z.B. ab 15 Umdrehungen rückwärts). Die Umdrehungen die der Motor zählen soll werden über andere Taster eingestellt. Mein Problem jetzt ist das ich mit dem Start Taster das ganze auch auslösen (anschalten) kann. Ich möchte aber auch gern wenn der Motor und alles läuft den Vorgang auch anhalten können, also Pause einlegen. Bei der Pause soll der Motor stoppen und die Umdrehungen sollen auch angehalten werden. Wenn der Motor läuft und ich den Taster betätige haltet er den Motor auch an aber nur wenn ich den Taster gedrückt halte und ich möchte es so das er beim einmaligen drucken stehen bleibt und ich nicht ihn gedrückt halten muss. Mit debounce geht das ja aber ich hab den Port an dem der Taster angeschlossen ist schon belegt und ihn auch schon mit debounce entprellt aber das Anhalten/Pausieren muss ja bei mir im Programm nochmal entprellt werden. Gibt es da auch eine andere Lösung den Taster zu entprellen? Danke Gruß
Hallo Lars, ja, gibt es, es gibt nämlich entprellte Taster, bei denen brauchst du in der Software nichts machen. Am sonsten kannst du ja mit FlipFlops arbeiten, die werten dann halt eben nur die erste Flanke aus, danach sind sie fest gesetzt bis du sie zurücksetzt. Eine weitere Möglichkeit besteht darin eine Einschaltverzögerung sowie Ausschaltverzögerung hintereinander zu schalten, damit kannst du dann beliebig entprellen. Gruß Josef
Deine Frage ist etwas unklar. Poste doch mal die Software, die Du schon geschrieben hast. Vielleicht wird's dann klarer.
Kann mir nicht helfen. Die ganze Problembeschreibung klingt nach einem verkorkstem Programmdesign.
Dein Problem scheint mir weniger die Entprellung, als mehr die Flankenerkennung. Dadurch muß der Taster nicht ständig gedrückt werden, um ein Ereignis auszulösen. Ob Du mit der Flanke den Motor anhältst oder startest, ist dann zweitrangig. if((Taster_Alt == gedrueckt) && (Taster == gedrueckt)) { Motor ^= 1; // Motor toggeln // wenn gelaufen -> stop // wenn gestoppt -> laufen } Taster_Alt = Taster; Gruß Matthias
Die Forenteilnehmer prellen selbst auch irgendwie. Das Thema wurde ja schon 1000* bis zum Erbrechen, Genervtsein und Wutanfall wiedergekaut. Dies wird immer mehr zum Forum von 1001 Hausaufgabe, LED und programmiertem Flipflop.
> Die Forenteilnehmer prellen selbst auch irgendwie.
Solange sie die Zeche nicht prellen geht's doch noch. ;-)
Zum Thema:
BASCOM ist kinderleicht, wird einem zumindest an jeder Ecke gesagt...
Trotzdem bekommen viele BASCOM-Nutzer die einfachsten Dinge nicht
gebacken. ;-(
Dein Problem:
Du müsstest einen Start/Stopp-Taster programmieren. Dazu brauchst Du
neben der eigentlichen Entprellung noch eine Flankenerkennung, die
wiederum Dein RUN-Flag toggelt, das dann den Motor (PWM) steuert
(Startrampe, Bremsrampe).
Die 8-Tasten-Bulletproof-Entprellung von Peter Dannegger hat neben der
eigentlichen (4-fach-)Entprellung auch die Flankenerkennung und (wenn es
sein muss) auch noch eine Repeat-Funktion für längeren Tastendruck.
Diese Routine ist in C und ASM in sehr effizienter Form verfügbar, in
BASCOM sollte sie auch möglich sein, da aber vermutlich nicht so
effizient.
...
Hallo, Würde das nicht eventuell gehen ,wenn du ein delay von ca 200 ms mit einbaust ,nachdem du den Taster betätigst? Ich bin selber noch Anfänger ,aber bei mir hat das bei diversen Sachen so funktioniert.
Edit if((Taster_Alt == nichtgedrueckt) && (Taster == gedrueckt)) { Motor ^= 1; // Motor toggeln // wenn gelaufen -> stop // wenn gestoppt -> laufen } Taster_Alt = Taster;
Lustig, wie sich hier wieder alle überbieten mit Tipps und Spekulationen. Und man weiß noch nicht mal, ob der OP überhaupt schon irgendeine Antwort gelesen hat. Beitrag "Das Forum als Schwingkreis" :-)
Danke für die ganzen Antworten. Mach mich jetzt mal an die Arbeit. Vielen Dank Lars
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.