Machen Sie einen Desktop Tamagotchi - Gunook

Machen Sie einen Desktop Tamagotchi - Gunook

Inhaltsverzeichnis:

Anonim

Eines Tages saß ich bei der Arbeit hinter meinem Schreibtisch und hatte das seltsame Bedürfnis, etwas zu bauen. Nachdem ich mich ein bisschen umgesehen hatte, hatte ich ein Auge auf eine LED-Matrix und das löste eine Idee in meinem Kopf aus: "I WANNA MAKE A TAMAGOTCHI"..

Also für diejenigen von euch, die nicht wissen, was zum Teufel ein Tamagotchi ist, ist hier ein kleiner Ausschnitt aus Wikipedia:

"Das Tamagotchi (た た ま っ ち Tamagocchi?) Ist ein digitales Handheld-Haustier, das in Japan von Akihiro Yokoi von WiZ und Aki Maita von Bandai hergestellt wurde. Es wurde erstmals 1996 von Bandai in Japan verkauft."

Mein Ansatz für dieses klassische Spielzeug ist es, es in ein Desktop-Gadget mit einer LED-Matrix für ein Display und einem Arduino für Gehirne zu verwandeln, um es den Menschen zugänglicher zu machen. Begleiten Sie mich, wenn wir den weltweit ersten (soweit ich weiß) Desktop Tamagotchi entwerfen, bauen und programmieren.

Zubehör:

Schritt 1: Das Richtige finden

Wie bei jedem anderen Elektronikprojekt benötigen Sie einige grundlegende Tools:

1) Lötkolben

2) Etwas Lötdraht

3) Ein Messerpaar

4) Eine Spitzzange

Optional: Holen Sie sich ein Lotgeflecht oder eine Lotpumpe, um Lötfehler zu beheben

Was die Elektronik betrifft, ist die Teileliste etwas länger. Hier ist, was Sie benötigen:

1) Ein ATmega328P mit dem Arduino Bootloader + 16MHz-Kristall mit zwei 22pF-Kappen

* Sie benötigen etwas zum Programmieren des Chips sowie eine Arduino-Plattform oder einen FDTI-Adapter

2) 4 x 74HC595 Schieberegister

3) 2 x ULN2803 Darlington-Transistorarray

4) 1 x DS1302 RTC + 32,768 kHz Kristall

5) 1 x 3V Knopfzellenhalter + die Batterie.

6) 4 rechtwinklige Druckknöpfe

7) 1 x Peizzo-Summer

8) 4 x 8x8 LED-Matrixmodule

9) 16 x 330Ohm Widerstände (Sie müssen den Wert für Ihre Matrix berechnen)

10) 2 x Reihe mit 16 Buchsenleisten

11) 2 x Reihe mit 16 Stiftleisten

12) 1 x Reihe mit 4 Buchsenleisten (zum Programmieren)

13) 5 x 100 nF Kappe

14) 1 x 10uF Kappe

15) 1 x 10K Widerstand

15) Stromanschluss

16) 5V DC Wandwarze

17) Ein großes Stück Protoboard

18) Einige Drähte für Verbindungen

Schritt 2: Die Hardware-Seite

Selbst wenn sich dieses Projekt hauptsächlich auf Software konzentriert, müssen wir zuerst die Hardware erstellen, um das Schreiben von Code und das Debuggen zu vereinfachen.

Die Hardware besteht aus 2 Hauptteilen: dem Mikrocontrollerteil und der LED-Anzeige.

Der Mikrocontroller-Teil ist sehr einfach, es ist ein eigenständiges Arduino (ATmega328 mit dem Arduino-Bootloader) mit

Einige Peripheriegeräte (4 Tasten, ein Summer und ein RTC), aber das ist der kritischste Teil, da es das ganze Denken erledigt.

Das LED-Anzeigeteil ist etwas komplexer und benötigt einige Zeit zum Einlöten. Diese Schaltung besteht aus 4 Schieberegistern (74HC595), 2 Darlington-Transistoren-Arrays (ULN2803) und 4 8x8-LED-Matrizen.

Wie bei den meisten LED-Displays ist es auch hier nicht verwunderlich, dass das Display gemultiplext werden muss (es ist ein ziemlich cooles Konzept), da das Ansteuern von 16 x 16 LEDs einzeln 256 Pins vom Mikrocontroller beansprucht und das ist einfach albern.

Selbst mit dem Multiplexing-Ansatz benötigen wir immer noch 32 (16 Zeilen + 16 Spalten) Pins vom Mikrocontroller, um das Display anzusteuern, was wir wiederum nicht haben. Daher besteht die Lösung darin, Schieberegister als E / A-Erweiterung zu verwenden, 4 8 Bitschieberegister geben uns 32 Ausgänge und es werden nur 3 Leitungen benötigt, um sie alle zu steuern.

Die Probleme enden hier jedoch nicht, da die Schieberegister nicht in der Lage sind, den Strom von 16 LEDs (wenn eine ganze Reihe leuchtet) an einem Pin abzusenken, sodass wir mit Hilfe des Darlington-Transistor-Arrays helfen müssen verhält sich wie ein Puffer, der große Ströme verarbeiten kann, die die Schieberegister braten können.

Um es zusammenzufassen, verwenden wir 4 verkettete Schieberegister, um die Anzeige zu steuern, wobei die ersten 2 die Zeilen und die anderen 2 die Spalten mit Hilfe des Darlington-Arrays steuern.

Das einzige, was in diesem Projekt berechnet werden muss, ist der Wert der Widerstände, die die LED-Reihen ansteuern.

Die Formel ist sehr einfach und sieht so aus:

R = (Vsource - Vled) / Iled

Vsource ist 5 V, Vled ist die Durchlassspannung an einer einzelnen LED in der Matrix und Iled ist der Durchlassstrom derselben LED.

Sie können auch Online-Rechner verwenden, um Ihnen dabei zu helfen.

Schritt 3: Das Konstruktionskonzept - LED-Platine

Als ich mit dem Bau angefangen habe, wollte ich einen sauberen Look haben, ohne einen Koffer zu verwenden (den richtigen Koffer zu finden, ist ein Albtraum), also habe ich mich entschieden

eine zweiteilige Konstruktion, d. h. eine Platine, die die LED-Matrix enthält, und die zweite mit der gesamten Elektronik.

Auf diese Weise ist das einzige, was Sie sehen, wenn Sie nach vorne schauen, die LED-Anzeige selbst und alle anderen Dinge sind hinter der Anzeige verborgen.

Die erste Karte mit der LED-Matrix bestimmt die Größe der zweiten Karte, da Sie die andere Karte hinter dem Display verstecken möchten. Legen Sie also die Matrixbaugruppe auf die Platine, markieren Sie die zu schneidende Stelle und schneiden Sie die Platine. Schneiden Sie das zweite Brett so, dass es die gleiche Größe wie das erste hat. Der Trick bei diesem Baustil besteht darin, Protoboards derselben Größe zu verwenden. Es ist daher eine gute Idee, die Boards zu schleifen, um sie auf dieselbe Größe zu bringen.

Da ich 4 8x8-LED-Matrizen hatte, musste ich sie miteinander verbinden, um eine 16x16-LED-Matrix zu erhalten. Das ist recht einfach und dauert nur ein wenig, bis sie miteinander verbunden sind. Die Art und Weise, wie Sie dies tun, besteht darin, die Zeilen der horizontalen Matrizen mit on und other zu verbinden und die Spalten der vertikalen Matrizen zu verbinden (ich habe die Verbindungen mit einigen dünnen Drahtwickeldrähten hergestellt).

Jetzt ist der einzige Teil, der mit dieser Karte übrig bleibt, das Verbinden der Header, die die Karten miteinander verbinden. Die Platzierung dieses Verbinders wird durch die Position der Schalter auf der zweiten Karte bestimmt. Die Schalter befinden sich an den Seiten der Platine, sodass Sie die Anschlüsse nicht an der Kante der Platine anbringen können. Aus diesem Grund befinden sich die Anschlüsse etwa 4 Löcher von der Kante entfernt.

Es gibt zwei Anschlüsse, einen für die Zeilen und einen für die Spalten.

Und um den Look zu beenden, empfehle ich, ein weißes Blatt Papier über die Matrix zu legen, um die Baugruppe auszublenden und einen sauberen Look zu erhalten.

Ich habe das Papier an die Kanten der Matrix geklebt, damit das Display vor dem Kleber geschützt ist.

Schritt 4: Das Konstruktionskonzept - Treiberplatine

Jetzt ist die Treiberplatine aufgrund der Platzbeschränkungen der komplexeste Teil dieses Builds, und ich kann Ihnen nicht wirklich sagen, wie Sie sie bauen sollen, da jeder seinen eigenen Baustil hat.

Was ich Ihnen sagen kann, ist die Platzierung der Schlüsselkomponenten wie der Tasten und der Anschlüsse. Jetzt sollten sich die Tasten an den Seiten des Bretts befinden und die meisten rechtwinklig sein, damit sie nicht sichtbar sind, aber Sie können sie trotzdem drücken.

Von dort aus platzieren Sie die Anschlüsse, die die beiden Platinen verbinden. Die Anschlüsse sollten so nah wie möglich an der Kante liegen, um eine gute und stabile Verbindung zu gewährleisten. Sie platzieren also die Tasten zuerst an der Kante und entscheiden von dort aus, wohin Stecken Sie die Stecker.

hinweis: Es ist ziemlich wichtig, dass die Anschlüsse auf beiden Platinen perfekt zusammenpassen und die Seiten der Platinen bündig sind.

Nachdem Sie diese kritischen Teile fertiggestellt haben, können Sie den Rest nach Ihren Vorstellungen selbst zusammenstellen. Stellen Sie jedoch sicher, dass keine Teile über Bord gehen.

Ich empfehle, Gruppen einzubauen und alle Teile in dieser Gruppe nahe beieinander zu halten, um die Verkabelung zu vereinfachen. Beispiel:

Der Säulenverbinder sollte mit den beiden Darlington-Chips und den beiden Schieberegistern verbunden sein, damit es Sinn macht, diesen Haufen nahe beieinander zu platzieren, und mit ein wenig Überlegung ist es möglich, hier und da in dieser Gruppe mit nur wenigen Drähten davonzukommen.

Stellen Sie außerdem sicher, dass Sie einige Programmier-Header für den Mikrocontroller für zukünftige Mods einfügen.

Schritt 5: Spielregeln

Nach Abschluss des Hardwareteils ist es Zeit, sich Gedanken über den Code und die Spielmechanik zu machen.

Dies war der schwierigste Teil für mich, da ich von Grund auf neu starrte und meine eigenen Regeln aufstellen musste, die bei weitem nicht perfekt sind.

Das Spiel ist so, wie es ist, sehr einfach auszunutzen und gut zu machen, aber dies ist kein ernstes Spiel und es soll ein cooles kleines Gadget sein.

Lassen Sie uns mit diesem kleinen Ausschluss ein wenig über die Spielregeln sprechen.

Das Tier hat 5 grundlegende Werte: Gesundheit, Gewicht, Glück, Hunger und Alter.

Die Rolle des Spielers besteht darin, diese Statistik durch 4 Aktionen auszugleichen, die er ausgeführt hat: das Haustier füttern, mit ihm spielen, nach ihm sauber machen und medizinische Versorgung.

Jede Aktion hat einen positiven und einen negativen Effekt und der Spieler muss sich bemühen, den besten Kompromiss zu finden.

Wenn der Spieler das Haustier füttert, hat er 3 Möglichkeiten: ihm eine Fleischmahlzeit geben, ihm eine Frucht oder eine Süßigkeit behandeln.

Eine Fleischmahlzeit gleicht die meisten Hungerpunkte aus und erhöht das Gewicht erheblich. Eine Frucht steigert die Gesundheit des Tieres, senkt jedoch das Glück des Tieres, und die Süßigkeiten steigern das Glück, senken jedoch die Gesundheit und erhöhen das Gewicht des Tieres.

Wenn der Spieler mit dem Haustier spielt, beginnt ein Simon-Spiel und abhängig davon, wie gut der Spieler war, erhöht sich die Glückszahl, aber wenn der Spieler sehr schlecht war, sinkt die Glückszahl.

Von Zeit zu Zeit geht das Haustier auf die Toilette und der Spieler muss nach ihm putzen. Jede Runde, die der Spieler verpasst, senkt die Gesundheit des Haustiers und erhöht die Chance, dass das Haustier krank wird.

Es gibt auch eine zufällige Chance, dass das Haustier krank wird. Diese Chance ist höher, wenn das Haustier alt oder schmutzig ist. Es gibt 3 Krankheitsebenen mit jeweils eigenen negativen Auswirkungen. Der Spieler kann dem Tier einen Schuss geben, um es zu heilen, aber dies verringert die Gesundheit des Tieres (niemand mag es, Schüsse zu machen: D).

Und der ohnmächtigste Teil (für mich) ist, dass das Haustier automatisch um 23:00 Uhr in den Schlaf geht und um 8:00 Uhr aufwacht, damit es nicht über Nacht stirbt. Natürlich können Sie diesen Teil nach Ihren Wünschen ändern und eine neue Schlafenszeit für das Haustier festlegen.

Schritt 6: Software: Menüs und Animationen

Hier sind wir am zeitaufwändigsten im Projekt, nachdem wir uns für alle Funktionen und Zustände des Spiels entschieden haben, ist es an der Zeit, sie zum Leben zu erwecken, indem wir alle Animationen, Einstellungen, Aktionen und Zustände des Spiels erstellen.

Für diesen Schritt habe ich eine Kombination aus zwei Programmen verwendet: paint.net und excel.

In Paint habe ich alle Icons und Menü-Screens nacheinander erstellt. Die Verwendung von Farbe ist eine große Hilfe, da Sie das Bild leicht kopieren, malen, löschen und bearbeiten können. Nichtsdestotrotz war dieser Teil für mich sehr schwierig, da ich es schwer hatte, benutzerdefinierte Symbole zu entwickeln, die für jede Aktion, jedes Setting, jedes Essen und jede Emotion stehen.

Hinweis: In Paint habe ich die Pixelrasteroption verwendet, damit ich einen Abschnitt auf einfache Weise in Pixel aufteilen und jeden einzelnen malen konnte.

Nach Abschluss der Arbeit an den Animationen und Symbolen habe ich die Symbole in Gruppen nummeriert und begonnen, die Bitmap der Symbole zu erstellen. Dazu habe ich meinen Lieblingstrick in Excel verwendet, um die Bitmap zu erstellen.

Ich habe eine Excel-Tabelle erstellt, mit der ich Zellen in einem bestimmten Bereich "malen" kann und die dann die Bitmap im gewünschten Format ausspuckt.

Danach müssen nur noch die Bitmaps in den Code kopiert und die Software geschrieben werden.

Schritt 7: Software: Final Code

Der Hauptteil dieses Projekts ist die Software und es ist das, was diesem Projekt seinen Charakter verleiht.

Jetzt werde ich den Code hier nicht im Detail durchgehen, da ich das im Code selbst getan habe. Erwarten Sie daher, dass dort viele Kommentare erscheinen (einige mit einigen schrecklichen Rechtschreibfehlern: D).

Der Code verwendet 3 Bibliotheken, die jedoch alle mit der Arduino IDE geliefert werden, sodass keine heruntergeladen werden müssen.

Ich habe den Code ohne spezielle Bibliotheken geschrieben, um die Mühe zu sparen, den Code auf dem neuesten Stand zu halten und diese Bibliotheken in Zukunft zu finden.

Aus diesem Grund ist der Code lang und hat viele verschiedene Funktionen.

Jetzt besteht der Code selbst aus zwei Hauptteilen: der Hauptschleife, die alle Spielregeln und das Verhalten "Haustiere" behandelt, und einer Timer-Interruptroutine, die die Aktualisierung der Anzeige behandelt.

Meine Arbeit am Code ist immer noch nicht abgeschlossen, da es immer neue Dinge gibt, die hinzugefügt und verbessert werden müssen. Deshalb werde ich den Code von Zeit zu Zeit aktualisieren. Der Code befindet sich jedoch im Moment im Arbeitszustand und ist voll funktionsfähig.

Schritt 8: Fertig! Was als nächstes?

Yay! Wir sind fertig! oder wir?

Wir haben eine voll funktionsfähige Tischplatte Tamagotchi mit allen Grundfunktionen, aber warum hier aufhören?

Es gibt viele Dinge zu ergänzen und zu verbessern, und es liegt an Ihnen, dies zu tun. Also nimm die Hürden und verbessere, ändere und hab Spaß damit!

Und vergessen Sie nicht, stolz auf Ihr Deck zu setzen und Ihre neue Kreation zu präsentieren.

P.S.

Pass gut auf dich auf und vergiss nicht, es von Zeit zu Zeit zu füttern:)