Forum: Mikrocontroller und Digitale Elektronik Zufallszahl PIC16F84


von volkan (Gast)


Lesenswert?

Folgendes problem:

Wir müssen als abschlussprojekt für die schule einen microcontroller
(PIC 16F84) programmierein.
Und zwar:

Wir sollen 6aus45 (Lotto mit 6+1 zufallszahlen) auf einem LCD display
ausgeben, hardware mäßig kein problem, aber die zufallszahl macht uns
einfach zu schaffen, habe bereits lange gesucht, aber bis her nichts
gefunden, und daher hier im forum  unser versuch.
Per taster soll die ziehnung gestartet werden und die 6+1 zahlen
nacheinander auf dem display angezigt werden. Random funktion gibt’s
leider keine, also sollte die zufallszahl wahrscheinlich mittels timer
konstruiert werden!
Um jede Hilfe dankbar, wir haben nämlich nicht mehr viel zeit!!!!
Gruß

von Uwe Nagel (Gast)


Lesenswert?

Lass doch einfach den Timer0 den Systemtakt zählen und lies den
Zählerstand beim Tastendruck aus. Da der Tastendruck zu einem
zufälligen Zeitpunkt auftritt ist auch der Zählerstand zufällig.
Muß man halt sieben Mal drücken...

Uwe

von Flo (Gast)


Lesenswert?

7 mal drücken oder:

du speicherst den zufallswert bei jedem spiel ab und verrechnest alte
gespeicherte zufallswerte mit dem neu ermitteltem zufallswert...

z.B.

1.Zufallszahl= Neu ermittelte Zufallszahl
2.Zufallszahl= Neu ermittelte Zufallszahl + Zufallszahl von vor 3
Spielen

Gruß

Flo

von volkan (Gast)


Lesenswert?

Das Problem ist, dass es die 7 zahlen nach einer tasten betätigung im 2
sekunden takt ausspucken soll!!

von Thorsten (Gast)


Lesenswert?

Ich hoffe ihr habt daran gedacht, daß jede Zahl nur einmal gezogen
werden darf.

von OldBug (Gast)


Lesenswert?

Der Gag an dem Projekt wird wohl gerade eben dieser Zufallsgenerator
sein :)
Das ist nämlich nicht ganz trivial.
Es gibt einige Ansätze dazu, und man sollte auch viel Literatur
finden.

Ein paar Taster abfragen und LCD ansteuern wäre warscheinlich einfach
nur "zu einfach" gewesen...

von peter dannegger (Gast)


Lesenswert?

Man könnte Pseudozufallszahlen nehmen, die wiederholen sich erst alle
2^31-1 = 2147483647 mal.

Das Problem ist bloß, daß nach jedem Reset immer die gleiche Folge
entsteht.

Abhilfe ist aber ganz einfach:

Sobald man eine Ziehung gemacht hat, speichert man den Wert des
Pseudozufallsregisters im EEPROM und holt in nach einem Reset wieder
dort als nächsten Startwert ab.


Peter

von Weihnachtsmann (Gast)


Lesenswert?

Hallo

Falls dieser Microcontroller einen Analogen Eingang hat legt man ein
Rauschen auf den Pin und liesst dann den Wert aus. Soviel ich weiss
gibt es so analoge Chaos-Schaltungen die ein chaotisches Signal
erzeugen.


Der Weihnachtsmann

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
Noch kein Account? Hier anmelden.