Zufallsmuster

Gast #4094901
Hallo Leute,

mein Name ist Felix ich mache momentan eine Ausbildung zum Elektroniker 
für Geräte und Systeme. Gegen Ende des zweiten Lehrjahres bekommen wir 
vom Betrieb die Möglichkeit uns ein Projekt auszusuchen. Meine Wahl fiel 
auf einen Reaktionsspiel. Dieses Spiel soll ein Feld von 8x8 
beleuchteten Tastern haben. Die Taster sollen nach einem Zufallsmuster 
aufleuchten. Ziel ist es die aufleuchtenden Taster zu betätigen. Während 
man dies tut soll die Zeit gestoppt werden. Doch nun zu meinem Problem 
:(. Ich darf nichts programmieren. Ich habe viel gesucht bin aber bis jz 
nicht fündig geworden. Ich darf allerdings einen fertig programmierten 
µC als Beispiel verwenden.

Hoffe ihr könnt mir weiterhelfen :)

MfG

Felix

PS: falls ihr noch Informationen benötigt über das Projekt kann ich auch 
mein Pflichtenheft hochladen.
Gast
Danke für die schnelle Antwort :)

Hast du zufällig einen simplen Schaltplan parat für die LSFR hab leider 
noch nichts mit diesen Bausteinen zu tun gehabt :(
Gast
Danke Einer

ich werde einen Versuchsaufbau machen und diesem Ansatz nachgehen. Das 
wird aber auch ziemlich viel bei 64 Feldern die beleuchtet werden müssen 
:) da habe ich mir ein aufwendiges Projekt ausgesucht ;)

Wie ich das mit der Zeitsteuerung realisieren soll weiß ich leider auch 
noch nicht aber als erstes muss ich das Zufallsmuster erzeugen können

MfG

Felix
Ich würd das Projekt in mehrere Teile aufspalten. Zum einen hast Du das 
Anzeigefeld, was auch mechanisch aufgebaut werden möchte. Dieses würde 
ich gleich als Final-Version bauen.

Danach kommt die Frage wie steuert man 64 Lampen. Welche Lampen? Ich 
würde LEDs nehmen. Wie steuert man sie? Entweder 64 Portpins (großer 
µC!!) oder Schieberegister. Wie stellt man ihnen den Betriebsstrom zur 
Verfügung? Ich weiß jetzt noch nicht wieviel Leistung Du da verbauen 
willst, aber wenn es nicht größer als ein Schachbrett wird reichen LEDs 
mit 500mA pro Feld, damit es blendend hell wird. Da kann man 8 ULN2003 
oder so nehmen, erspart den Aufbau aus 64 einzelnen Transistoren. 64 
LEDs direkt an einen Controller oder Schieberegister ist vermutlich nur 
machbar, wenn niemals viele gleichzeitig leuchten und es auch nicht 
besonders hell sein muß.

Ich würds mit Schieberegistern lösen, damit ich nicht so viele Portpins 
brauche. Dann passt auch noch ein LCD-Display oder so mit an den 
(normal-großen) Controller. Die Tastaturmatrix braucht ja auch noch 
Pins.

Dann bleibt als letztes das Problem was Du mit dem LED-Feld machen 
willst. Erst hier kommen Dinge wie Zufallszahlen oder Interaktion 
(Abfrage der Taster, Anzeige der Reaktionszeit) ins Spiel. Das hängt 
alles davon ab, welches Spiel Du Dir da ausgedacht hast.
Gast
-Ein 8 Bit Schieberegister für die Spalten mit nur einer getzetn 1 auf 
sich selbst zurücgekoppelt.
-Ein 8 Bit Schieberegister für die Zeilen mit nur einer getzetn 0 auf 
sich selbst zurücgekoppelt.
-Zwei unabhängige RC-Oszilatoren die die beiden Schiebregister takten 
(Freuqenz möglichst ungrades vielfache vondem anderen)
-Die Schiebregister Treiben Die LEDs direkt an ihren ausgängen (ist ja 
immer nur eine LED aktiv).
-Noch nen 555 der die Takte nach einer gewissen Zeit sperrt und einen 
Quartz getaktetn Counter freigibt.
-um den RC Oszillatoren einen zusätzlichen Zufall zu geben eventuell 
noch Mikrofon und anderes Zeug in den Takt einer der beiden.
-dem 555 auch noch irgendwie pseudo Zufäälig beeinflussen.
-bei Druck auf Taster wird der Counter angehalten und das Ergebnis 
angezeigt.
Wäre jetzt das simpelste was mir einfällt, ob das auch zufäälig genug 
ist muss man ausprobieren.
-Bei elekronischen Würfeln missbraucht man den Benutzer als 
Zufallsquelle, der drückt einen Taster und läßt ihn wieder los. Da der 
Takt so hoch ist kann man nicht beeinflussen welche Zahl gewürfelt wird. 
Ob das hier erlaubt ist? Dann könnte man den Taster anstatt des 555 
benutzen.
Gast
Danke für eure Antworten :)

Wunschvorstellung ist es farbige bzw beleuchtete Taster (64 an der Zahl) 
anzusteuern und diese durch ihre Betätigung wieder auszuschalten. Bei 
der Betätigung des ersten Tasters (von dem Zufallsmuster) soll eine 
Stoppuhr beginnen zu zählen und bei der Betätigung des letzten Tasters 
soll diese Stoppuhr wieder stoppen.

Leider fehlt mir noch die Erfahrung und das benötigte Fachwissen :(

Ich verstehe einfach nicht wie ich dies realisieren soll :(

MfG

Felix
Gast
Felix schrieb:
> Bei
> der Betätigung des ersten Tasters (von dem Zufallsmuster) soll eine
> Stoppuhr beginnen zu zählen und bei der Betätigung des letzten Tasters
> soll diese Stoppuhr wieder stoppen.

Und die nächste Taste leuchtet erst, wenn die richtige betätigt wurde? 
Diese Forderung lässt sich wohl nur durch programmieren lösen.

Mach erst mal einen kleinen Aufbau mit 4x4 Tasten/LED
Gast
Werde ich machen :)

Du musst dir das so vorstellen es leuchtet ein Muster auf und dieses 
Muster leuchtet dauerhaft für ein "Spiel" also solange bis alle "Lichter 
ausgeknipst sind" es ist egal in welcher Reihenfolge ich dieses Muster 
anfange auszudrücken. Doch sobald ich den beleuchteten Taster betätigt 
habe erlischt das Licht von ihm.

Ich habe mein Pflichtenheft im Anhang dann kannst du dir das Beispiel 
als Skizze anschauen
Angehängte Dateien:
Gast
Felix schrieb:
> Ich darf nichts programmieren.

Wie vereinbart sich das mit:

Felix schrieb:
> Ich darf allerdings einen fertig programmierten
> µC als Beispiel verwenden.

Heißt das, du sollst die Programmierarbeit als Auftrag vergeben?
Denn wenn ich mir dein Pflichtenheft ansehe, dann wird das ohne 
Mikrocontroller in richtig viel Aufwand ausarten. Wenn du nur bis Ende 
Juli Zeit hast, hast du nur mit einem Mikrocontroller eine Chance haben 
das noch zu schaffen.
Gast
Ich darf das programmieren leider nicht vergeben das ist es ja was mich 
so fertig macht.

Ich muss wohl den riesen Aufwand in Anspruch nehmen da ich bis jz keinen 
fertigen Baustein gefunden habe der mir ein Zufallsmuster generiert
Gast
Dann lerne das Programmieren.

Bis Juli ist jede Menge Zeit, und ein Aufbau mit 4x4 sollte auch für 
einen Anfänger bis ende Mai möglich sein. Selbst wenn man sich das 
Programmieren frisch beibringt.

Kauf ein Arduino, Stöpsel da 16 LED und 16 Taster dran und leg los.

Dann hast Du noch einen Monat für den großen Aufbau.

Los geht's
Gast
Ich darf nicht programmieren das ist die Vorgabe vom Betrieb.

Ich muss dieses Projekt ohne programmieren verwirklichen

Kann man das Zufallsmuster mit einem CMOS o.ä. realisieren??
Gast
Unter diesen Umständen würde ich versuchen, das so primitiv wie möglich 
umzusetzen: Pseudozufallszahlen beispielsweise über eine von einem Motor 
angetriebene Stiftwalze (wie bei einer Spieluhr) oder von einem 
Lochstreifen einlesen, Logik aus Relais bauen, freiverdrahtet. Sollte 
alles gehen, und wenn's dann einen halben Schrank füllt, egal, oder?
Gast
Sollte so klein wie nur irgend möglich sein.

Da hab ich ne knackige Aufgabe :)
Ich hatte so an TTL gedacht oder Schieberegister damit kann ich doch 
auch ein Zufallsmuster erzeugen oder?
Gast
Wenn immer nur eine Taste aufleuchten soll, kann man auch einfach einen 
Zähler laufen lassen, der vom Benutzer zu einem beliebigen Zeitpunkt 
gestoppt wird, und dessen Ausgänge auf alle Tasten dekodieren.
Gast
Felix schrieb:
> Da hab ich ne knackige Aufgabe :)
> Ich hatte so an TTL gedacht oder Schieberegister damit kann ich doch
> auch ein Zufallsmuster erzeugen oder?

Hallo Felix,

So knackig ist das nicht :)

Idee: Du erzeugst Zufallszahlen als bit (0 oder 1) und schiebst davon 8 
Stück in ein Schiebregister. Damit hast du schon mal das Bitmuster (für 
eine Zeile). Du zeigst die Ausgangsbits des Schieberegisters als Zustand 
des Tasters an (1 = an). Jetzt musst Du nur noch das Schieberegister 
selektiv löschen:
Es gilt zu prüfen ob Bitposition = 1 und Taster = 1 dann lösche 
Bitposition des Schieberegisters. Wenn Bitposition = 0 und Taster = 1 
dann Fehler.

Wie Du die Bitzustände des Schiebregisters löschst: na da würde ich z.B. 
auf einen Parallel-Load optieren.

So und jetzt könnte ich mir vorstellen das ganze noch mit 74xxx74 zu 
machen, das ganze vielleicht seriell reinzsuschieben und mit dem Taster 
asynchron Reset zu machen und jedes mal einen Fehler auszulösen wenn 
Bitposition = 0 Und Taster gedrückt.

Von diesen Schaltungen kannst Du 8 parallel (8 Zeilen) schalten.

rgds
Gast
Felix schrieb:
> Du musst dir das so vorstellen es leuchtet ein Muster auf und dieses
> Muster leuchtet dauerhaft für ein "Spiel" also solange bis alle "Lichter
> ausgeknipst sind" es ist egal in welcher Reihenfolge ich dieses Muster
> anfange auszudrücken. Doch sobald ich den beleuchteten Taster betätigt
> habe erlischt das Licht von ihm.

Nachtrag zum Pflichtenheft:

Das Spiel ist nicht Fair da die Anzahl der zu drückenden Taster bei 
völlig freier Zufallsgenerierung nicht immer gleich ist, es kann also 
sein dass Spieler1 nur eine Taste und Spieler2 z.B. 32 oder gar 63 
Tasten "abräumen" muss und damit schon länger braucht. Das ist aber dem 
Prinzip "TTL Logik" geschuldet ansonsten bräcutest Du tatsächlich mehr 
Aufwand um die Anzahl der Einsen im Zufallsfeld zu kontrollieren.

Nachtrag zum Voschlag:
Man könnte auch ohne Mikrocontroller das Ganze in einem CPLD pro Zeile 
lösen, reduziert den Aufwand ist aber "programmiert" :)

rgds
Gast
Danke dir :)

Damit könnte ich ein Zufallsmuster erzeugen doch nun zu meinem nächsten 
Problem über diesen LED´s wird ein Taster montiert und sobald ich diesen 
betätige soll die LED darunter ausgehen

Doch wie ?
Gast
Jede Taste benötigt ein Flip-Flop. Set wird durch den Zufallsgenerator 
betätigt, Reset durch die Taste selbst. Ob noch irgendeine Taste 
"leuchtet", könnte man mit 64 Dioden erkennen.
Gast
Felix schrieb:
> Doch wie ?

Jedes Feld hat ein Flipflop, der Zustand des Flipflops ist das Feld. Das 
Feld ist gesetzt = 1 = LED an.

Wenn das Feld gesetzt ist kann man es mit einem Taster zurücksetzten (da 
gibt es verschiedene Möglichkeiten, achtung ein paar haben da 
gravierende Nachteile). Erlaubt ist ein Zurücksetzten nur wenn das Feld 
gesetzt ist und der Taster für das Feld gedrückt wird. Ist das Feld 
nicht gesetzt und der Taster wird gedrückt wird ein Fehler angezeigt, 
die Uhr gestoppt.

Also ich komme auf ca. 10...12 TTLs pro Zeile:
4x 74xx00 (1/2 pro Feld)
4x 74xx74 (1/2 pro Feld)
Und dann noch die Fehlererzeugung:
irgendetwas mit Open Collector
und die Anzeige "alle Leer":
1x 8-fach NAND

Für das Laden brauchst Du einen Zähler der 9 Impulse erzeugt, 8 mal für 
das einschieben und 1x für Game Start/Uhr Start.

Und dann noch die Uhr.

rgds
Gast
Wie wäre es einfach mit Pseudozufallszahlengeneratoren:
http://de.wikipedia.org/wiki/Linear_r%C3%BCckgekoppeltes_Schieberegister

Entweder 1 pro Zeile und einfach die Reihenfolgen für die LEDs 
vertauschen. Oder unterschiedliche Polynome (wäre wahrscheinlich besser, 
da dann auch unterschiedlich viele LEDs pro Zeile leuchten).
Dann haben Deine Zeilen schon mal einen Startwert.

Per Knopfdruck kommt das nächste Muster und der Zähler wird Resettet.
Zusätzlich könntest Du über einen globalen Resetknopf den Startzustand 
wiederherstellen (erste Pseudozufallszahl --> erstes Spiel) und jeder 
Spieler hätte die gleichen Spiele hintereinander (da ja  nur 
Pseudo-Zufall).

Dann noch 8x8 AND und SR-FF für das ausschalten der gedrückten Lampen.
Also Lampe an AND Taster-Impuls rücksetzen des SR-FF.

Dann bräuchtest Du nur noch die ganzen Schalter verodern. Das gibt dann 
Dein Startsignal. Sobald einer gedrückt wird start Counter.

Dann brauchst Du noch ein NOR über alle FF Ausgänge (oder Lampen).
Also wenn alle Lampen aus sind = 1.
Das gibt Dein Stopsignal für den Counter.

Dann noch den eigentlichen Zähler und einen Bin to BCD Wandler für die 
Anzeige.

Das müsste es gewesen sein. Oder hab ich was vergessen?
Gast
6A66 schrieb:
> Sebastian schrieb:
>> Set wird durch den Zufallsgenerator
>> betätigt, Reset durch die Taste selbst.
>
> tricky - think it over !
>
> rgds

Felix schrieb:
> Ohje 10 bis 12 TTLs ist sehr viel

Hallo Felix,

na ja. Du hast ohnehin in Deinem Projektplan die Erstellung einer 
Leiterplatte, ohne die kommst Du nicht hin. Dann Eine für die zentrale 
Steuerung und eine für die Uhr, sind drei die Du bauen musst - die 
Zeilenplatine dann eben 8x. Sind gesamt 10 Stück. So what. Wenn Du eine 
Lösung findest die einfacher geht gerne. Ideen hast Du ja jetzt. Ich bin 
hier wieder raus, höre aber gerne mal zwischendurch mal wieder rein für 
den Gall dass es Fragen gibt.

Keine Angst, das Projekt ist nicht so kompliziert. Überlege erst einmal 
eine Zeilenplatine, simulier die und bau die auf dem Steckbrett oder 
einer Lochraster auf. Wenn die geht hast Du schon das ganze Brett. Und 
die Uhr ist nicht zu kompliziert (100Hz Oszillator, 4 BCD-Zähler mit 
7-Segment Decoder für 99,99 Sekunden).

Und das ganze wird dann doch bei euch im Foyer bei Rafi ausgestellt - 
oder? Da sollte es schon was Professionelles sein.

rgds
Gast
Danke euch für die vielen Ideen ich werde jetzt erstmal ein bisschen rum 
experimentieren und euch dann meine Ergebnisse mitteilen einen 
Probeaufbau machen und die Schaltung simulieren.

Nochmals vielen Dank :)
Gast
Interessant, was in den Köpfen der Lehrbetriebe bzw. der Ausbilder so 
vor sich geht. Leben die noch in der Steinzeit? Da wird ein Projekt, 
welches mittels Controller eigentlich ein besseres Wochenendprojekt ist, 
durch unsinnige Vorschriften zu einer im Monaten zu rechnenden 
Sisyphusarbeit aufgeblasen.
Gast
Hans Müller schrieb:
> Interessant, was in den Köpfen der Lehrbetriebe bzw. der Ausbilder
> so vor sich geht. Leben die noch in der Steinzeit? Da wird ein Projekt,
> welches mittels Controller eigentlich ein besseres Wochenendprojekt ist,
> durch unsinnige Vorschriften zu einer im Monaten zu rechnenden
> Sisyphusarbeit aufgeblasen.

Naja, so aufwändig ist es nun auch nicht.
Von der Logik hat man das in einem Tag durchgespielt.
Dann noch Platinen designen, fertigen lassen, aufbauen und testen.
Wahrscheinlich soll in diesem Projekt der Schwerpunkt halt mehr auf 
Logik und HW liegen.
Wobei man das auch (meiner Meinung nach) auf einem CPLD/FPGA machen 
könnte.
Gast
Hans Müller schrieb:
> Interessant, was in den Köpfen der Lehrbetriebe bzw. der Ausbilder so
> vor sich geht. Leben die noch in der Steinzeit? Da wird ein Projekt,
> welches mittels Controller eigentlich ein besseres Wochenendprojekt ist,
> durch unsinnige Vorschriften zu einer im Monaten zu rechnenden
> Sisyphusarbeit aufgeblasen.

<IRONIE> Jo hast Du völlig recht.
Der Azibu hat ja schon C und die ganze Controllertechnik gelernt und 
kann mit der IDE umgehen. Da kann ihm auch sein Azibu Kollege dabei 
helfen.
Und der Kollege nebenan, der das in einem Jahr verbessern muss hat sich 
schon in die SW einegarbeitet.

Ehrlich gesagt halte ich die Vorgaben und den Zeitplan für sehr 
realistisch für das Projekt. Muss man sich ranhalten, klar, aber no 
rocket science, kann also jeder gut erlernen. Das Projekt mache ich auch 
übers Wochende, klar, auch mit TTL. Interessiert aber hier niemanden 
denn es soll ja ein AZUBI machen und a) dabei noch mal lernen und b) das 
was er kann und gelernt hat an einem Projekt umsetzten lernen wobei es 
um das UMSETZEN geht.

rgds
Gast
Hallo zusammen

ich baue mein Zufallsmuster mit Schieberegistern und einem extra Taster 
da ich ja nie gleichzeitig loslassen kann ;) doch wie verwirkliche ich 
jetzt eine Stoppuhr die parallel dazu meine benötigte Zeit stoppt sie 
soll ss:msms anzeigen

Grüße Felix
Gast
Also ein 4 stelliger Zähler der in 10ms Schritten Zählt.
z.B. so was hier (Suche einfach mal nach TTL Zähler 4 stellig):
http://www.elektronik-kompendium.de/public/arnerossius/schaltungen/mitics/count4.htm
mit einem Oszillator der 100Hz liefert.
Spiel beginnt: Oszillatortakt wird an Zähler weitergegeben
Spiel endet: Oszillatortakt wird abgeschaltet
Reset: Zähler wird auf 0 gesetzt.
Der ":" sind 2 LEDs.
Gast
Hallo zusammen,

Zur Information, im zweiten Lehrjahr hat man noch keine C-Kenntnisse 
oder ähnliches, da dieses erst im Dritten Lehrjahr beinhaltet ist!

Mfg
Gast
Ja,

Wobei t Deine Periode (z.B. 1ms / 10ms) in Sekunden ist.

Wenn Du aber eine Anzeige ss:msms brauchst dann ist der niedrigste Wert
10ms, mit 1ms wäre das dann ss:msmsms um bei Deiner Notation zu bleiben.
Gast
Bei der Schaltung im Link wäre das oben rechts, 5V, Inp (Der Takt), GND.

Wie genau muß die Messung denn sein?

Einen 100Hz Quarz wirst Du nicht finden. Den Takt musst Du entweder mit 
einem schnelleren Quarz(besser ein fertiger Quarzoszillator der braucht 
keinen Verstärker) und einem entsprechenden Teiler.
Der Teiler ist im Prinzip wieder ein Zähler der z.B. nur jeden 10 Impuls 
weitergibtung (In der Schaltung der 74LS90 mit dem Qd Ausgang) oder wenn 
es nicht ganz so genau sein muss mit einer Schaltung wie z.B.:
http://www.555-timer-circuits.com/astable-multivibrator.html

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.