Ronaldi
Ronaldi - Tamagotchi 
In 2003 hatte ich die Idee, einen Tamagotchi zu entwickeln. Mein Wissen über AVRs war noch recht klein.
Der hier vorgestellte Tamagotchi wurde auf Basis des AT90S2313 entwickelt. Diese CPU wurde schon seit
einiger Zeit von Atmel aus dem Programm genommen. Extra für diese Homepage habe ich das Projekt
überarbeitet und auf einen ATtiny2313 angepaßt und den Schaltplan in sPlan gezeichnet.
Als ich 2002 die ersten Gehversuche mit AVRs gemacht habe, benutzte ich noch einen Amiga. Ich hatte
mir eine eigene Brennsoftware geschrieben und einen eigenen ISP-Adapter konstruiert. Auch waren
damals meine Platinen- und Lötarbeiten noch recht laienhaft.
Der hier vorgestellte Tamagotchi und dessen Projektdaten dürfen zur privaten Nutzung frei und kostenlos
verwendet werden. 
Klicken Sie auf das Bild, um eine Vergrößerung darzustellen.
Anzeige
Der Tamagotchi benutzt eine sog LED-DotMatrix. Ein fertiges Element, daß 5x7 LEDs beherbergt, die in
einer Matrix verschaltet sind. Die Kathoden einer Reihe sind zusammen gelegt. Man gibt auf eine Reihe
(1-7) einen GND und auf eine der fünf Spalten eine positive Spannung. Je nach Spaltenauswahl,
leuchtet die entsprechende LED.
Für diesen Tamagotchi habe ich das Modul um 90° nach links gedreht, sodaß ich sieben Spalten und
fünf Reihen habe. Durch ein schnelles Multiplexverfahren wird das Bild erzeugt. Im Stromsparmodus
wird die Frequenz des Multiplexverfahrens geändert, sodaß die Leuchtkraft sinkt und damit weniger
Strom verbraucht wird.
Funktionen
Das Gerät besitzt vier Taster. Mit den beiden vorderen können Funktionen ausgewählt und aktiviert
werden. Mit dem linken Taster kann man eine Funktion auswählen, wie z.B. Trinken oder Essen und mit
dem rechten Taster wird diese Funktion durchgeführt. Möchte man dem Tamagotchi etwas zu Essen
geben, dann drückt man so oft auf den linken Taster, bis das Symbol für Essen erscheint. Danach drückt
man den rechten Taster und hat damit das Essen ausgeteilt.
Auf der Rückseite befindet sich ein Reset-Taster und ein Start-Taster. Wenn die Batterien gewechselt
werden müssen, muß man nach erfolgtem Tausch den Taster Start drücken, um das Gerät wieder
einzuschalten. Möchte man ganz neu anfangen, dann muß man drei mal den Reset-Taster drücken.
Der Auftrag
Der Tamagotchi zeigt sich als hüpfender Ball, der ständig über Hindernisse springt. Je schneller er das
tut, um so besser geht es ihm. Seinen Zustand zeigt er in regelmäßigen Abständen durch ein Gesicht
an. Ist alles in Ordnung, wird er ein freundliches Gesicht machen. Geht es ihm nicht so gut, dann zeigt
er ein trauriges Gesicht. Wenn Ronaldi einen Wunsch hat, dann zeigt er es in regelmäßigen Abständen
durch ein Symbol. Erscheint ein “Burger”, dann hat er Hunger, ein Glas zeigt Durst an und ein kleiner
Haufen zeigt Unsauberkeit an. Möchte er schlafen, erscheint ein Bett und braucht er einen Doktor
erscheint ein Krankenbett. Mit den beiden vorderen Tastern kann man eine entsprechende Funktion
auswählen, um den Bedürfnissen von Ronaldi gerecht zu werden. Ein “Burger” gibt ihm Essen, das
Glas etwas zu trinken. Der Besen und Eimer dient zum Saubermachen und der Krankenwagen bringt
den Arzt. Das Bett läßt ihn schlafen gehen. Wenn Ronaldi schläft ist eine schwingende Welle zu sehen.
Die Geschwindigkeit der Welle zeigt an, wie tief Ronaldi schläft. Schläft er tief, dann schwingt die Welle
langsam. Ist er kurz vor dem Aufwachen, dann schwingt die Welle schnell. Ronaldi wacht alleine auf. Er
kann aber mit einem Tastendruck geweckt werden. Wenn Ronaldi keinen Schlaf benötigt, kann man ihn
auch nicht schlafen schicken.
Sollte Ronaldi sehr lange vernachlässigt werden, geht er ein. Das zeigt er, indem er nur noch sitzt und
nicht mehr herumspringt. Wenn er gestorben ist, erscheint ein Kreuz. Durch einen Reset (drei mal Reset
drücken) kann Ronaldi ein neues Leben anfangen.
 
 
Schaltplan im SPlan-Format
Binär-Datei direkt zum Brennen in den ATtiny2313
Assembler Quellcode für AVR-Studio
Hinweise
Die Schaltung kann auch ohne Quarz aufgebaut werden. Dazu muß dann nur die FuseBitEinstellung
auf 4MHz intern eingestellt werden. Ein BrownOut von 1,8V ist sehr zu empfehlen. Der Takt darf nicht
geteilt werden.
Die Schaltung arbeitet erst ab einer Spannung von ca 2V. Mit dem Start-Taster wird die automatische
Abschaltung bei Unterspannung überbrückt (Einschaltbedingung). Ist genügend Spannung vorhanden,
hält sich die Schaltung automatisch. Sobald die Spannung im Verlauf unter 2V sinkt, schaltet sich das
Gerät ab. Damit wird eine Tiefenentleerung bei Verwendung von Akkus vermieden. Mehr als 5V sollten
der Schaltung nicht zugemutet werden.
Der AssemblerQuellCode ist recht konfus. Ich bitte dies zu entschuldigen. Das Projekt stammt aus den
Anfängerzeiten meiner AVR-Entwicklung. So kann man z.B. erkennen, daß ich keine IRQs benutze.
Die Verwendung von Strukturen habe ich jetzt erst eingefügt. Vorher war alles noch mit
Direktadressierung (ganz schlimm ;-) ).
Die Energieversorgung ist der große Schwachpunkt des Projektes. Die DotMatrix verbraucht enorm viel
Energie. Deshalb wurde schon ein Energiesparmodus eingebaut, der die Helligkeit nach einer
gewissen Zeit reduziert. Es sollten min drei Zellen mit je 1,5V bzw 1,2V benutzt werden. Idealerweise
als Mignon (AA). Meine Tests mit MikroBatterein (AAA) haben eine Laufzeit von ca 10 Tagen ergeben.
Mit CR2032 kann die Energieversorgung nicht realisiert werden (Laufzeit max 1 Tag).
 
Diese fertig aufgebaute Platine habe ich in 2003 selbst gefertigt. Den alten AT90S2313 habe
ich entfernt und einen ATtiny2313 eingesetzt. Auf dem dritten Bild kann man die Rückseite
mit meiner eigenen ISP-Schnittstelle sehen. Die Platine hat die nötigen Ausmaße, um in
ein Standardgehäuse eingebaut zu werden.