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.
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 :(
Anderer Ansatz:
2 mal elektronischer Würfel
http://www.uwehomm.de/schaltungen.html
aber als Decoder zb. 74LS138
und die Lampen als Matrix ansteuern
Die Reaktionszeitmessung ist dann noch die zweite Baustelle.
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.
-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.
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
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
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
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.
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
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
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??
Von "nichts programmieren" steht nichts in diesem Pflichtenheft, also
frag noch mal Deinen Chef, was er damit genau meint, ansonsten machst Du
das mit nem µC (microcontroller) :)
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?
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?
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.
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
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
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 ?
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.
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
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?
6A66 schrieb:> Sebastian schrieb:>> Set wird durch den Zufallsgenerator>> betätigt, Reset durch die Taste selbst.>> tricky - think it over !>> rgdsFelix 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
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 :)
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.
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.
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
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
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.
Hallo zusammen,
Zur Information, im zweiten Lehrjahr hat man noch keine C-Kenntnisse
oder ähnliches, da dieses erst im Dritten Lehrjahr beinhaltet ist!
Mfg
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.
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