Kleines Update - inzwischen bin ich auch mal dazu gekommen, meinen Emic
2 Sprachsynthesizer an den Microtronic (Emulator) anzubinden - das
funktioniert sowohl mit meinem Emulator, als auch mit dem Original.
Busch hatte 1981 schon im Anleitungsbuch einen Sprachsynthesizer für den
Microtronic angekündigt - allerdings wurde dieser dann niemals
veröffentlicht (wundert mich auch nicht). Nun, 35 Jahre später gibt es
sowas nun also ;-) Mehr als 58 Zeichen passen jedoch nicht in den
Microtronic-Speicher.
Sprachsynthesizer für Original-Microtronic:
https://www.youtube.com/watch?v=IkjEVPdRH-s
Sprachsynthesizer für Microtronic-Emulator:
https://www.youtube.com/watch?v=UR0WBpXFcEU
Ich hatte hier ja nachgefragt, wie man am Besten eine
"Baud-Konvertierung" von einigen wenigen Baud (Mikrotronik) auf 9600
Baud Seriell (Emic 2) hinkriegt. Das Problem soll hiermit nun etwas
konkreter vorgestellt werden.
Ich habe einfach einen Arduino Uno für diesen Zweck verwendet, da dies
die einfachste Lösung zu sein scheint. Der Mikrotronik sendet den zu
sprechenden String für den Emic 2 mittels seiner 4 digitalen Ausgänge an
die analogen Eingänge des Arduinos. Ein ASCII-Zeichen wird als 2 Nibbles
übertragen, wobei Nibble 1 die Hundert- und Zehnerstelle vom Dezimalcode
des ASCII-Zeichens ist, und Nibble 2 die Einerstelle vom Dezimalcode des
ASCII-Zeichens ist. Warum Dezimal? Nun, der Datenstrom ist
"selbst-taktend" - ich wollte die Null dafür verwenden. So wird also
eine Null nach jedem Nibble gesendet, und um daher Nullen im Datenstrom
zu vermeiden, addiere ich jeweils +1 zu den beiden Daten-Nibbles. Das
gibt dann also 1 bis 10 (Hex A) für Nibble 2, und 1 bis 13 (Hex D) für
Nibble 1 im Datenstrom. Das geht zwar nicht für den vollen
8-Bit-ASCII-Umfang, aber für alle relevanten ASCII-Zeichen von 13 bis
127. Ein 'A' = 65 wird dann also als 7 0 6 0 gesendet, und ein 'z' =
122 als D 0 3 0. Der Arduino baut daraus dann wieder einen normalen
ASCII-String zusammen, und sendet ihn an den Emic 2 mittels 9600 Baud
seriell (nachdem CR empfangen wurde).
Die digitalen Eingänge vom Arduino waren für diesen Zweck übrigens
komplett unbrauchbar. Ich musste die analogen nehmen, und dann
Thresholds für eine händische Analog-Digital-Konvertierung einstellen.
Ebenfalls kritisch waren das Timing etc. Insgesamt also eine ziemliche
Friemelei.
Ich hätte gedacht, dass es dafür eine einfachere Lösung gibt? Ich hatte
hier ja schon mal gefragt. Falls jemand eine Idee hat, wie man sowas
besser, schneller, eleganter, stabiler -> professioneller hinkriegt,
wäre ich sehr interessiert! Das ganze Projekt ist natürlich ein reines
Spaß- und Lernprojekt (für mich!).
Viele Grüße
Michael