lemkajen hat geschrieben:
also mein code hat nichts mit "fishduino" zu tun.
Stimmt nicht ganz, fishduino baut auf Deinem Artikel auf:
Bei Fishduino ist es halt nur in eine Library verlegt, in cpp umgesetzt und um eine Mainloop, welche die serielle Schnittstelle abfragt, ergänzt worden. Die Pins hat der Autor auch noch geändert.
Fishduino ist also ein "Ableger" von Deinem Code.
Das mit dem Abtippen ginge zwar (und wäre wirklich echt retro), ob der Fehler, wenns nicht klappt, dann bei mir oder doch in zwei defekten Interfaces (kann ich ja nicht ausschließen) liegt, weis ich dann aber noch nicht. In der ft:pedia ist der Code ja als Bild eingebettet. Ein sehr schöner Artikel übrigens.
Besten Dank für das Angebot, den Code per Mail zu versenden, ich habe Dir eine PN gesendet.
Edit:
Nach einigen Stunden des Rumprobierens - auch dank des von Jens gemailten Codes - bin ich zu dem Schluss gekommen, dass es bei mir ein Hardwareproblem gibt:
- Das Setzen der Ausgänge klappt, mit Jens Code wie mit Fishduino
- das Lesen der Eingänge gibt nur Chaos, ständig zwischen 1 und 0 wechselnd
- Es sei denn, ein Taster ist angeschlossen und gedrückt. Dann ist der Eingang konstant auf 1, alle anderen wechseln ständig weiter.
Daraus schließe ich, das meine Arduinos kein saubres LOW auf der Datenleitung bekommen. Dadurch wird bei Low mal Low, mal High erkannt und immer Unsinn zurück gemeldet. Habt ihr vielleicht irgendwelche Puffer in der Leitung? Möglich natürlich auch, dass meine Interfaces ne Macke haben; ich könnte natürlich auch versuchen, ob es was bringt, den internen Pull-Up im Universal-Interface von 3k3 auf 47k zu vergrößern. Eventuell ist auch die Spannung in den Interfaces etwas rippelig (Kondensatoralterung).
Daraufhin habe ich den FishduinoSer-Code modifiziert, so dass die vom Interface geholten Daten ignoriert werden, statt dessen wird ein Byte aus D9-D13 und A0-A2 gebastelt und an RoboPro zurückgegeben. Gleiches Chaos auf den Eingängen. Bis ich die internen Pullups aktiviert habe - dann waren alle Eingänge auf 1. Da noch einen Puffer-Inverter vor und ich könnte zumindest so 8 digitale Eingänge bereit stellen. A6+A7 kann ich dann für AX/AY nehmen.
Insgesamt kann ich damit leben, auch wenn es mich etwas wurmt, nicht zu wissen, was genau die Ursache beim Ausleseproblem ist. Die beiden Universals können nun - wenn die beiden Nanos aus China da sind - als Intelligent Interfaces verwendet werden.
Frei sind noch A4+A5, auf denen man i2c laufen lassen kann. An sich ja nichts viel anders, als die serielle Übertragung, nur einerseits einfacher, weil man über Kommandos über Sub-Adressen bzw. Datenbytes ein praktikables Protokoll ausarbeiten kann, bei denen man gezielt einzelne Eingänge auslesen bzw. Ausgänge/Motoren/Stepper schalten kann. Andererseits kniffeliger, weil man i2c-Anfragen ja nur bei Bedarf anfordert, während beim IF-Mode ja regelmäßig automatisch abgefragt/geschrieben wird. Um die 0,3s Notausschaltung zu vermeiden, muss man auch bei i2c-Modus ohne eingehende Kommandos aufs Interface zugreifen.
Weil ich keine Lust mehr habe, auf i2c für den TXT zu warten, habe ich mir doch erstmal einen gebrauchten TX ersteigert. Mal gespannt, wies funktioniert.