Das Spiel "Snake" auf das Steckbrett legen. Teil 2: Vektoranzeige

Im ersten Teil haben wir eine Maschine mit der Logik des Spiels zusammengestellt. Genauer gesagt, nicht das ganze Spiel, sondern nur die Bewegung der Schlange selbst. In diesem letzten Teil werden wir herausfinden, wie der Bildschirm angeschlossen und die gesamte Schaltung beendet wird. Hohe Auflösung - Click To Click




Zeichne einen Schwanz


Wir haben bereits einen Kopf, der alleine auf dem 8 × 8-Feld läuft, jetzt müssen wir einen Schwanz ziehen. Dies ist nicht ein Punkt, sondern viel, und wir können die Koordinaten (X, Y) einfach nicht auf die Decoder übertragen.

Normalerweise wird auf Matrizen wie unseren eine „ dynamische Anzeige “ und die zeilenweise Version verwendet : Wenn wiederum der Inhalt jeder Zeile als Ganzes angezeigt wird. Unter unseren Bedingungen müssen wir dazu entweder alle 64 Bits irgendwo speichern oder auf komplizierte Weise den Wert für jede Zeile berechnen. Es gibt aber noch eine andere Möglichkeit zur Anzeige, es ist auch ziemlich dynamisch in dem Sinne, dass nicht alle Punkte gleichzeitig leuchten. Wir können so etwas wie eine „ Vektoranzeige “ verwenden»- Zeigen Sie jeden Punkt der Reihe nach an und geben Sie dem Bildschirm seine Koordinaten an. Zu jedem bestimmten Zeitpunkt brennt nur ein Pixel, das wir über den Bildschirm fahren.

Da die Anzahl der Punkte bei uns unterschiedlich sein kann (abhängig von der Länge des Schwanzes), ändert sich auch die Helligkeit des resultierenden Bildes mit dem Spielverlauf und dem Wachstum der Schlange selbst. Um dies zu verhindern, reservieren wir eine feste Anzahl von Bildern (10 = 1 Bild für den Kopf, 1 für den Apfel und 8 für den Schwanz) und schalten den Bildschirm für unnötige Punkte aus. A - Apfel, H - Kopf, T # - Schwanzzellen. In Wellenform gezeichnet




Zur Anzeige benötigen wir auch einen Automaten. Diese Maschine besteht aus mehreren Teilen: Eines davon ist ein Rahmenzähler, der einfach 10 Zustände in einem Kreis umgeht. Nehmen wir für diese Zwecke IE18 und eine Logik.



Am einfachsten ist es, den Kopf herauszuholen. In diesem Rahmen schalten wir einfach den Bildschirm ein und geben auf dem x / y-Bus den Wert ein, den die automatische Maschine uns gibt. Verwenden Sie dazu den AP6-Puffer (Sie können AP5 nehmen, aber es gibt keine so bequeme Pinbelegung).
Als nächstes müssen wir einen Schwanz zeichnen. Dazu werden wir uns in unserem Zustand daran erinnern, was wir gerade gemalt haben. Fügen Sie die Schwanzwachstumsrichtung hinzu (unter Verwendung des Schemasaus dem vorherigen Teil) und Anzeige. Um zu wissen, dass wir den Schwanz ausgeben müssen, vergleichen wir einfach die Rahmennummer mit der Schwanzlänge unter Verwendung des 4-Bit-Komparators SP1 (U13). Wir werden die vorherigen Koordinaten im 8-Bit-Register IR37 speichern (oder IR27, sie haben gerade geendet ...), und für neue verwenden wir EEPROM, die Tabelle, für die wir bereits im ersten Teil generiert haben. Die Richtung des gewünschten Abschnitts des Schwanzes wird unter Verwendung der KP15-Multiplexer von der Spielmaschine übernommen, indem die Rahmennummer auf die Adresseingänge angewendet wird. Und wir dürfen nicht vergessen, dass wir die Richtung des Kopfes beibehalten, die der Richtung des Wachstums des Schwanzes entgegengesetzt ist, was bedeutet, dass eine der Komponenten umgekehrt werden muss. Glücklicherweise müssen Sie keinen separaten Wechselrichter installieren, da KP15 einen inversen Ausgang hat. Gesamt:


Die Maschine erwies sich als etwas verwirrender, aber das Funktionsprinzip ist das gleiche wie bei allen anderen.

Ein Apfel


Dies ist der "schmutzigste" Teil unseres Programms. Erstens, weil es eine zufällige Position des Apfels erfordert und unsere Maschinen keinen Tropfen Zufälligkeit haben. Zweitens müssen wir das Signal, einen Apfel zu essen, von einer Maschine zur anderen werfen, während die Maschinen ein anderes Taktsignal haben. Auf intelligente Weise wird dies als Taktdomänenkreuzung bezeichnet, aber wir werden eine einfache Krücke herstellen.

Wo kann man zufällig kommen? Sie können sich einen Pseudozufallsgenerator einfallen lassen, dies erfordert jedoch eine nicht triviale Menge an Logik. Eine andere Möglichkeit besteht darin, eine Uhr mit einer anderen Frequenz zu nehmen, vorzugsweise nicht sehr stabil, aber unsere NE555 unterscheiden sich ohnehin nicht in der Stabilität. In der Multivibratorschaltung können Sie Ihrem Geschmack einige verrauschte oder nichtlineare Elemente hinzufügen (ich habe sie in Reihe mit einem JFET-Widerstand mit einem baumelnden Verschluss in der Luft hinzugefügt). Wir erhalten eine zufällige Koordinate und speichern sie in einem 6-Bit-Zähler. Es gibt keine vorgefertigten 6-Bit-Chips. Verbinden wir also zwei IE10-Fälle:



Im selben Knoten setzen wir einen Puffer, um den Apfel durch das Aktivierungssignal auf dem Bildschirm anzuzeigen. Und auch ein Komparator, um zu verstehen, dass das, was jetzt auf dem Bildschirm angezeigt wird, mit dem Apfel (zwei SP1) ĂĽbereinstimmt. Wir werden nicht nur den Apfel mit sich selbst vergleichen, sondern das vierte Bit des Komparators verwenden und ihm auf der einen und auf der anderen Seite ein Berechtigungssignal geben.

Und hier erwartet uns ein schmutziger Hack: Abhängig von der Serie der Mikroschaltung, der Verzögerung des Auflösungssignals, der parasitären Kapazität des Steckbretts und der Mondphase kann sich der Komparator etwas früher einschalten, als der U23-Treiber ausschaltet. Genauer gesagt, was passiert:



Aufgrund des ausgewählten Synchronisationsschemas (dazu später) wird uns ein solcher Fehler stören. Es wäre richtig, dies mit Hilfe einer Verzögerung, beispielsweise von mehreren Wechselrichtern, zu unterdrücken oder sogar die Einbeziehung und den Vergleich in verschiedene Phasen zu verteilen. Aber ich war schon müde genug und habe es einfach mit einem C5-Kondensator zerquetscht, da dies der schmutzige Teil der Schaltung ist :)

Einen neuen Apfel stempeln und pflĂĽcken


Der Haupt-U7-Generator taktet Frames, wir haben 10 davon, dann teilen wir diese Frequenz durch 16 unter Verwendung eines anderen IE10-Zählers (U19) und verwenden ihn zum Takten der Schritte. Das Signal, dass der Kopf mit dem Apfel übereinstimmt, erscheint nur auf einem von 10 Bildern und hält nicht bis zur Vorderseite des Impulses an, der das Bild umschaltet. Hier brauchen wir eine Synchronisationsschaltung. Ich habe mich für die einfachste Option entschieden: Wir werden das Signal in den asynchronen Eingang des Triggers einspeisen und es auf jeden neuen Schritt der Empfangsmaschine zurücksetzen.



Am Ausgang des Triggers erhalten wir ein Signal zum Hinzufügen einer weiteren Schwanzzelle (U6) sowie zum Starten des Zählers, der die Koordinaten des Kopfes (U21, U22) speichert. Dadurch wird ein neuer, möglicherweise zufälliger Apfel erzeugt.

Ganze Strecke



Tolles Klickschema. Und wie es auf dem Steckbrett aussieht - am Anfang des Artikels

Teile und Komponenten


Steckbretter


Sie können Ali chinesische Entwicklungsplatinen abnehmen, aber Probleme mit schlechten Kontakten dauern viel länger als das direkte Zusammenbauen der Schaltung. Gute Boards werden von Ben Eater empfohlen, dies sind Boards BB830 (weiß) oder WBU-202 (gelb). Ein Satz Drähte ist auch am besten für Wisher (WJW-60B) geeignet, und jeder chinesische Satz, auch der billigste, wird als weich verwendet.

Mikroschaltungen


Ich habe versucht, die beliebteste inländische Serie, KP1533, zusammenzubauen. Im Westen ist dies die 74ALS-Serie, aber dort war sie überhaupt nicht beliebt. In diesem Schema gibt es keine kritischen Parameter für das Timing oder die Ladekapazität, sodass Sie sicher eine Reihe von K555 (74LS) oder sogar K155 (SN74) nehmen können. Von den importierten können Sie 74HC (für Kompatibilitätsstufen müssen Sie jedoch fast alle Chips dieser Serie verwenden) oder 74HCT verwenden, das vollständig mit den TTL- und CMOS-Serien kompatibel ist.

Die Suche nach inländischen Mikroschaltungen erwies sich als entmutigende Aufgabe: Niemand braucht sie in beliebten Online-Shops und hat vor langer Zeit alle Überreste ausverkauft. Ich habe einige Chips in lokalen Offline-Läden gesammelt, andere mussten im Internet bestellt werden, aber viele Lieferanten sind nicht daran interessiert, an kleinen Bestellungen zu basteln, also hat es trotzdem Spaß gemacht ...

Die resultierende Stückliste stellte sich wie folgt heraus (durch einen Schrägstrich werden mögliche Ersetzungen angezeigt):

──────────────────────────────────────────────────────
          │ 1× *1 74*04
                │ 1× *3 74*00
                │ 1× *1 74*20
         │ 1× *2 74*74
          │ 2× *6 74*245 / *5 74*244 ( )
     │ 3× *1 74*85
  │ 2× *15 74*251 / *7 *151
        │ 1× *18 *163
                │ 4× *18 *163 / *10 *161
        │ 3× *27 74*377 / *37 74*574 ( )
                │ 1× *37 74*574 / *27 74*377 ( )
EEPROM          │ 3× AT28C16 / CAT28C16
     │ 1× *7 74*138 / 4 74*155 ( )
                │ 1× 5611 CD4028 ( ) /  AT28C16
       | 2Ă— 10061 NE555
──────────────────────────────────────────────────────

Gesamt


Ich hoffe, Ihnen hat dieses Schema gefallen und vielleicht wird jemand eine Hand heben, um es zu wiederholen, oder etwas noch Interessanteres tun.)) Sie

können das Video auf YouTube ansehen:

In den Kommentaren zum vorherigen Teil haben wir empfohlen, die LED-Matrix zu filtern. Dies ist eine sehr gute Sache, aber bei gedämpftem Licht können Sie darauf verzichten.

Sie können das Archiv mit der EEPROM-Schaltung und den Dumps hier herunterladen .



Gebrauchte Materialien


1. Harris & Harris ' Buch , das nie mĂĽde wird, es zu empfehlenYuripanchul- zur allgemeinen Orientierung.

2. Referenz Biryukova S.A. - um nach Pinbelegung bestimmter Mikroschaltungen zu suchen.

Beide Bücher sind als PDF zu finden, aber die Papierversion ist schöner.

3. Ben Eaters Website und sein YouTube-Kanal dienen als Inspiration.))

4. Wavedrom dient zum Zeichnen von Diagrammen.

An alle, die bis zum Ende gelesen haben, vielen Dank fĂĽr die Aufmerksamkeit!

All Articles