Rollenspielwürfel

OP #953831
Lesenswert?

Guten Tach,

ich spiel sehr gerne Rollenspiele, bei denen man mit 2 Würfeln muss. 
Einen 6er und einen 20er, nun habe ich mir gedacht ich Programmier mir 
einen PIC(kann nur PIC programmieren) der für mich würfelt. Da der 
Würfel ein paar spezielle Funktionen haben soll, benötige ich Hilfe.

Es soll 2 Taster geben, einen für den 6er Würfel und einen für den 20er 
Würfel, 2 7-Segmentanzeigen zum anzeigen der Zahlen. Wenn ein Taster 
gedrückt würde, leuchtet die Anzeige komplett, nach dem loslassen des 
Tasters soll der Würfel langsam ausrollen. Ist der Würfel ausgerollt, 
soll die Anzeige 2mal Blinken und am besten noch über einen kleinen 
Lautsprecher ein Ton ausgegeben werden.

Mit freundlichen Gruß
Michael Brucksch
Gast #953916
Lesenswert?

Naja die ist relativ einfach machbar, einfach ein Timer der durchzählt.

Bei mehreren MHz und einer normale Geschwindigkeit von vielleicht 1x 
drücken in 5sekunden ist da der zufall doch schon ziemlich gegeben...
#954018
Lesenswert?

ein Würfel hat doch aber per Definition nur 6 Seiten. Schreibt man da 
mehrere Zahlen auf eine Seite und sucht sich dann die passendste aus? 
Wem der Zufall mit floatendem AD-Pin noch nicht zufällig genug ist 
könnte auch einen Transistor vor sich hinrauschen lassen und per AD 
abtasten. Man kanns aber auch direkt mit dem Controller machen wenns 
kein analoger Zufall sein muss. Hier http://mondo-technology.com/ ist 
unter Tricks und Tips sowas fürn PIC beschrieben.

bye

Frank
#954037
Lesenswert?

Wahrscheinlich wird das mit dem Speicher des PIC etwas knapp, aber man 
könnte, was das Ausrollen angeht, eine Vorüberlegung anstellen, auf 
welche angrenzenden Seiten der Würfel von einer bestimmten Seite aus 
kippen kann. Dann wird das vielleicht realistischer aussehen. 
Andererseits merkt wahrscheinlich kein Mensch, daß es einfach nur 
Zufallszahlen sind, die immer langsamer durch das Display laufen.
Das in Assembler zu programmieren, ist durchaus eine schöne 
Übungsaufgabe. Displayansteuerung (ggf. Multiplexbetrieb über 
Timer-Interrupt, oder statisch mit externen BCD-Decodern), 
(Pseudo)-Zufallszahlen, Tastenabfrage, Umgang mit Verzögerungsschleifen 
und Zählvariablen...
Wenn ich Zeit hätte, würde mich das als Aufgabe sogar reizen... aber ich 
muß die nächsten Tage noch 2 Layouts zeichnen, sorry. Vielleicht fühlt 
sich ja jemand anders motiviert.
#954079
Lesenswert?

Stefan M. wrote:
> Naja die ist relativ einfach machbar, einfach ein Timer der durchzählt.


Nein das ist überhaupt nicht einfach!

Du mußt auch vom Programmablauf her sicherstellen, daß die Chancen, 
einen Zustand zu erwischen exakt gleich sind.

Auch kann durch die unterschiedliche Stromaufnahme der LED-Ziffern eine 
Verschiebung der Schaltschwelle des Tasteneingangs erfolgen, d.h. 
bestimmte Ziffern werden bevorzugt, je nach Entladungsgrad der Batterie.


Hier mal ein funktionierendes Beispiel:

http://home.tiscali.de/peterd/appl/soft/c51/dice/index.htm


Peter
Gast #954087
Lesenswert?

Ich kenn jetzt nur die AVR-Hardware. Aber da würd ich einen Timer nehmen 
und den im CTC-Modus bis zum Höchstwert des Würfels* laufen lassen. Dann 
den Taster an einen Input-Capture-Pin. Dann müsste die 
Wahrscheinlichkeit doch ausreichend gleich verteilt sein.


*natürlich Höchstwert - 1
#954119
Lesenswert?

@Peter:

Nein, ich meine nicht, daß der Speicher für das Würfelprojekt allgemein 
zu knapp ist. Lediglich eine realistische "Ausrollsimulation" in 
Tabellenform wird, insbesondere beim 20seitigen, etwas Programmspeicher 
verbrauchen. Bei einem 16C54 oder 16C505 kann es dann, zusammen mit der 
7-Segment-Tabelle, vielleicht zu knapp werden. Aber gut, PIC kann 
genausogut ein 16F876 sein. Dann reicht's immer.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren