Hallo freunde der Programmierung!! Ich veruche mich an der Programmierung eines ATmega8 mit Bascom. Eigentlich klappt auch alles ganz gut! Nur jetzt will ich eine gegenseitige verrigelung programmieren! hab schon etliches versucht hab aber keine lösung dafür gefunden! Könnt ihr mir helfen? denke das das doch kein Problem für euch sein wird! :-) So wie ich euch kenne DANKE DANKE DANKE Jan
Erkläre mal genauer, was Du mit gegenseitiger Verriegelung meinst.
Eigentlich ganz einfach! will mit 4 tastern 4 ausgänge ansteuern! und wenn ich einen taster drücke kann man mit den anderen Tastern nicht mehr die jeweiligen ausgänge ansteuern erst nach einem Reset z.B. wie eine Schützverriegelung.. quasi..
@ Jan Bölting (janosch2405) >Eigentlich ganz einfach! will mit 4 tastern 4 ausgänge ansteuern! und >wenn ich einen taster drücke kann man mit den anderen Tastern nicht mehr >die jeweiligen ausgänge ansteuern erst nach einem Reset z.B. wie eine >Schützverriegelung.. quasi.. Für Jeopardy? ;-) MfG Falk
Das kann ja wohl nicht so schwer sein, dass mans nicht mit ein bisschen Überlegung hinkriegen kann. In Endlosschleife packen: IF (alle Lichter aus) { {Tastenzustände abfragen} IF (Taste A gedrückt) {Licht A einschalten} IF (Taste B gedrückt) {Licht B einschalten} IF (Taste C gedrückt) {Licht C einschalten} IF (Taste D gedrückt) {Licht D einschalten} } Sobald irgendein Licht an ist, werden die Tasten einfach nicht mehr abgefragt - das ist die geniale Idee :-). Zum Rücksetzen brauchst Du nur eine Master-Taste vorsehen, die alle Lichter ausschaltet.
@ AVRFan (Gast) >Das kann ja wohl nicht so schwer sein, dass mans nicht mit ein bisschen >Überlegung hinkriegen kann. Dann MACH es mal ganze real und praktisch nutzbar! Dein Pseudocode kann das nämlich nicht. MfG Falk
>Dann MACH es mal ganze real und praktisch nutzbar! Ist das mein oder Jans Projekt? >Dein Pseudocode kann das nämlich nicht. Der soll auch kein fertiges Programm sein, sondern das Prinzip verdeutlichen. Diese Aufgabe erfüllt er, denk ich. Nochmal das Prinzip: Man fragt in einer Endlosschleife periodisch (z. B. timergesteuert alle 20 ms --> Entprellungsproblem gelöst) ab, ob ein Taster gedrückt wurde. Wenn ja, schaltet man sofort das zugehörige Licht ein. Die Tastenabfrage findet jedoch nur statt, solange noch kein Licht an ist. Rücksetzen aller Lichter auf "aus" mit einem gesonderten Taster. Fertig.
Ich würde noch eine Variable mehr spendieren. Das vereinfacht die Abfrage und macht die Lampen nicht zum Eingabegerät.
1 | oben: |
2 | |
3 | Lampe := 0 |
4 | |
5 | Solange(Lampe == 0) { |
6 | Wenn (Taste 1 gedrückt) { Lampe := 1 } |
7 | Sonst Wenn (Taste 2 gedrückt) { Lampe := 2 } |
8 | Sonst Wenn (Taste 3 gedrückt) { Lampe := 3 } |
9 | Sonst Wenn (Taste 4 gedrückt) { Lampe := 4 } |
10 | } |
11 | |
12 | SchalteLampeAn(Lampe) |
13 | Solange ('Reset' nicht gedrückt) { Chips essen } |
14 | SchalteLampenAus() |
15 | |
16 | Zurück nach oben: in einer möglichst strukturierten Weise |
Geht je nach Beschaltung auch generischer.
@ Paul Baumann (Gast) >Dateianhang: Verriegel_4_Tasten.bas (906 Bytes, 3 Downloads) >Hier noch eine Variante von Falk's Idee. Ähh, und was soll das? Und vor allem, hast das mal durch BASCOM gejagt? Der Compiler meckert garantiert. Und einen Fehler hast du auch eingebaut, der Pull-Up für PB0 fehlt jetzt . . . Nur Einmal mit . . . MfG Falk
Na klar habe ich das durch den Compiler gejagt. ...und er hat nicht mal gemeckert. Deinen Code habe ich dagegen nicht heil durchgebracht. Das war der der Grund für: "Was soll das?" ;-) MfG Paul
@ Paul Baumann (Gast) >Na klar habe ich das durch den Compiler gejagt. ...und er hat nicht mal >gemeckert. Deinen Code habe ich dagegen nicht heil durchgebracht. Das ??? Ich hab ihn auch compiliert. Was meckert dein BSCOM denn? MFG Falk
Loop expected, hat er gesagt. Ich habe Deinen Code nun direkt abgespeichert und es geht fehlerfrei. Wahrscheinlich hatte ich vorhin bei "Copy und Paste" ein Stück abgesägt. Entschuldige ein paar Mal MfG Paul
>Ich würde noch eine Variable mehr spendieren. Das vereinfacht die >Abfrage und macht die Lampen nicht zum Eingabegerät. Deine Variante mit der Lampen-Variable hat noch einen Vorteil: Sollten mal zwei Taster zum exakt gleichen Zeitpunkt gedrückt werden, geht dann trotzdem garantiert nur eine Lampe an (bei Deinem Code haben in diesem Fall die "höheren" Priorität vor den niedrigeren).
@ AVRFan (Gast) >Deine Variante mit der Lampen-Variable hat noch einen Vorteil: Sollten >mal zwei Taster zum exakt gleichen Zeitpunkt gedrückt werden, geht dann >trotzdem garantiert nur eine Lampe an (bei Deinem Code haben in diesem >Fall die "höheren" Priorität vor den niedrigeren). Werfe er eine Blick auf meinen Code. MfG Falk
>Werfe er eine Blick auf meinen Code.
Ist ja gut, habs nun auch gesehen, die "elseif"s in Deinem voll
lauffähigen und schlechthin als hervorragend zu bezeichnenden Code ;-)
gewährleisten diese Funktionalität ebenfalls.
Diese Routine dient dazu das immer Nur Eine Taste In Funktion Ist , Also Alle Tasten Sind Gegeneinander Verriegelt. http://bascom-forum.de/index.php/topic,10.msg3146.html#msg3146
Danke Falk!! jetzt das ganze nur fürn ATMega8 :-) und alles in Binär.. :-) muß das erstmal alles raffen sorry! :-) bin blutiger Anfänger... aber irgendwann muß man ja mal anfangen.. DANKE DANKE JAn
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.