Heute haben wir ein Projekt mit einer Mikrospielkonsole, das jeder wiederholen kann.
Notwendige Materialien und Komponenten:
Dieses Handbuch stammt aus dem YouTube-Kanal von AlexGyver. Der Mikrocontroller für dieses Projekt benötigt Folgendes:
Dies ist Attiny85 im DIP-Paket, es wird für uns ausreichen. Um es nicht zu löten, nehmen wir den sogenannten Sockel.
Wir brauchen auch ein Display mit Aliexpress, OLED mit einer Auflösung von 128 x 32 Pixel.
Stifte sind auch praktisch.
Die hier verwendeten Schaltflächen sind:
Natürlich können Sie Tastaturen nehmen, aber diese müssen fertiggestellt werden, aber ich möchte nicht wirklich schneiden und löten. Das Batteriefach ist von diesem Typ:
Und wir werden unsere Spielekonsole mit einem Steckbrett zusammenbauen (wenn Sie möchten, können Sie selbst ein Brett herstellen). Wir werden den USBasp-Programmierer flashen, aber jeder AVR wird es tun.
Schaltplan Die Komponenten sind wie folgt:
Das Display wird mit den I2C-Bus-Pins des Mikrocontrollers verbunden. Wir verbinden Knöpfe mit anderen freien Stiften. Fügen Sie außerdem einen Schalter hinzu, um das System ein- und auszuschalten. Und im Grunde ist das alles, es bleibt, um die Stromversorgung anzuschließen.
Die Firmware wird vom Programmierer nach folgendem Schema in den Mikrocontroller geladen:
Beginnen wir nun mit der Montage und ordnen alle Elemente auf dem Steckbrett an. Lassen Sie uns versuchen, zusammenzubauen und zu sehen, wie alles aussieht.
Es stellte sich als ziemlich asketisch heraus. Nicht schlecht. Der überschüssige Teil des Steckbretts kann abgesägt werden.
Jetzt reparieren wir alle Komponenten, indem wir ihre Beine verlöten.
Jetzt müssen Sie die Schlussfolgerungen gemäß dem Schema verbinden. Zu diesem Zweck empfiehlt der Autor die Verwendung eines dünnen chinesischen Befestigungsdrahtes.
Zur Vereinfachung können Sie dieses gespiegelte Verbindungsdiagramm verwenden.
Diese Drähte haben eine so dünne Isolierung, dass Sie sie direkt löten können. Die Isolierung selbst schmilzt und der Draht wird verlötet.
Fahren Sie dann mit dem Verschließen des Batteriefachs und des Schalters fort. Das Fach muss zusätzlich mit einer Heißklebepistole befestigt werden.
Nun, das ist alles, das System ist zusammengebaut, es bleibt die Firmware herunterzuladen. Wir werden den „Stein“ separat blinken lassen, indem wir ihn mit dem Programmierer auf dem Steckbrett verbinden.
Die Firmware ist wie bei allen Projekten des Autors gemeinfrei und kann von heruntergeladen werden. Auf der Projektseite finden Sie auch ein Diagramm und alle weiteren notwendigen Informationen zu diesem Projekt.
Wir werden uns nicht im Detail mit dem Download befassen. Wenn etwas nicht klar ist, können Sie sich jederzeit an den Autor wenden, um detaillierte Anweisungen zu erhalten.
Für Firmware einfach installieren Arduino Installieren Sie den Kernel für die Arbeit mit Mikrocontrollern der Attiny-Serie, wählen Sie eine Karte und einen Programmierer aus.
Dann wählen wir die Frequenz von 8 oder 16 MHz, öffnen die Registerkarte "Extras", suchen und wählen "Record Loader".
Es gibt dort keinen Lader, aber der Mikrocontroller wird auf die erforderliche Frequenz eingestellt. Wählen Sie dann die Registerkarte "Skizze" - "Download über den Programmierer". Und wir warten, bis die Skizze in den Mikrocontroller geladen ist.
Jetzt nehmen wir den „Stein“ heraus und stecken ihn in das Herz unserer Mini-Spielekonsole.
Wie Sie sehen können, funktioniert es! Und jetzt schauen wir uns genauer an, was wir in der Firmware haben. ATtiny85 ist ein Mikrocontroller mit 512 Byte RAM, der sehr klein ist. 99% der Bibliotheken, die mit einer solchen Anzeige arbeiten, verwenden einen Puffer an der Seite des Mikrocontrollers, um das Bild korrekt neu zu zeichnen, da diese Anzeige keine Daten aus ihrem eigenen Puffer lesen kann und übrigens vorhanden ist.
Der Puffer für diese Anzeige von 128 * 32 Pixel benötigt 512 Bytes, wenn wir uns den Zustand jedes Bits, dh eines Pixels, merken möchten.
Zusätzlich zum Puffer müssen wir auch andere Daten speichern, sodass diese Option sicherlich nicht in den Speicher einer solchen Größe passt.
Daher wurde beschlossen, die Anzeigeauflösung durch Puffern von Quadraten von 4 Pixeln auf 64 × 16 Pixel zu senken.
Der Autor hat direkt mit diesem Display gearbeitet und es geschafft, seine Idee erfolgreich umzusetzen. Eine Skizze kann für jemanden nützlich sein, der mit Attiny mit diesem Display arbeiten möchte.
Nun zum Spiel selbst. Es funktioniert ganz einfach. Der Ball bewegt sich auf einem separaten Timer. Die Bewegung besteht darin, einen Punkt mit denselben Koordinaten zu löschen und einen neuen Punkt in die neuen Koordinaten einzufügen.
Die Berechnung von Koordinaten ist einfach das Hinzufügen von Geschwindigkeitswerten zu den Koordinaten im Anzeigesystem.
Wenn der Ball über die horizontalen Wände hinausgeht, prallt er einfach von ihnen ab und ändert die vertikale Komponente der Geschwindigkeit in das Gegenteil, dh mit einem Minuszeichen (-).
Darüber hinaus überprüft das Programm die vertikalen Grenzen des Spielfelds. Wenn der Ball auf den Schläger trifft (oder wie auch immer Sie ihn richtig nennen), springt er und der Sprungwinkel ist zufällig.
Wenn der Ball die Wand hinter dem Schläger durchbricht, hat der Spieler die aktuelle Runde verloren und der Gegner erhält einen Punkt.
Die Bewegung des Schlägers des Spielers wird auf die gleiche Weise ausgeführt wie die Bewegung des Balls, dh der alte Schläger wird gelöscht und ein neuer wird bereits mit neuen Koordinaten gezogen. Die Koordinaten ändern sich, wenn Sie auf die Schaltfläche klicken.
Dies ist viel schneller als das Reinigen des gesamten Displays und das erneute Rendern aller Elemente.
Nun zum Schläger des Gegners. Es wird von KI (künstliche Intelligenz) gesteuert.
Nun, künstliche Intelligenz wird natürlich laut gesagt, aber dennoch macht diese Intelligenz eine sehr einfache Sache, nämlich den Schläger in die Richtung zu bewegen, in der sich der Ball jetzt befindet, während versucht wird, sein Zentrum entlang der vertikalen Achse mit der vertikalen Koordinate des Balls auszurichten. Um einen solchen Gegner wirklich zu schlagen, hat der Autor ihn langsam gemacht, dh er berechnet seinen nächsten Zug erneut anhand des Timers und hat daher möglicherweise keine Zeit, den Ball zu fangen und ihn dadurch abzuwehren.
Auch im Spiel implementierte Mechanik mit zunehmender Komplexität. Alle 10 Punkte zugunsten des Spielers erhöht sich die Geschwindigkeit des Balls. Gleichzeitig wächst auch die Reaktionsgeschwindigkeit der KI (des Gegners).
Infolgedessen ist hier so ein einfaches kleines Pong. Nicht umsonst wurde dieses Videospiel als erstes entwickelt, denn selbst ein unerfahrener Programmierer kann es schreiben. Trotz der offensichtlichen Einfachheit des Projekts dauerte die Aufregung mit dem chinesischen Display vom Autor etwa 20 Stunden reine Zeit. Gleichzeitig berücksichtigte er nicht die Zeit, die er für das Schreiben des Codes des Spiels selbst und anderer Workflows im Zusammenhang mit dem Debuggen und Einrichten der Schaltung aufgewendet hatte.
In dieser Sache ist das Summen selbst der Montageprozess, nicht die Anwendung.Das Entwickeln von Spielen, auch von einfachen, kann sehr interessant sein. Besonders wenn Sie versuchen, sie in einen winzigen Mikrocontroller zu schieben. Und wenn das chinesische Display um die Ecke auf Sie wartet ...
Das ist alles. Danke für die Aufmerksamkeit. Bis bald!
Video des Autors: