TI-84 Plus <-> Arduino

Hallo alle zusammen,

ich benötige mal wieder etwas Hilfe von euch !
Und zwar bin ich durch ein Thema Brauche Hilfe bei Projekt mit serieller Datenübertragung! - Taschenrechner - Deutsch - Arduino Forum
auf den Gedanken gekommen, ob ich nicht auch meinen Taschenrechner mit dem Arduino verbinden könnte.
Und zwar handelt es sich um den TI-84 plus.

Nach ein wenig suchen bin ich auch schon auf eine Lösung gestoßen TI-84+ to Arduino communication - YouTube

, nur wurde dort das Programm nicht in C/C++ geschrieben und da ich mich mit Assembler (wenn ich mich nicht täusche handelt es sich darum) noch nicht so wirklich auskenne, habe ich da so meine Probleme die wichtigen Dinge da raus zu „filtern“.

Von daher meine Frage an euch:
Hat hier jemand eine Idee bzw. hat es schon mal jemand umgesetzt, dass der Arduino mit dem Taschenrechner über den Serial Link Port kommunizieren kann ?! Weil ich will jetzt nicht einfach drauf los basteln/programmieren, denn der Taschenrechner ist ja nicht allzu günstig. Deswegen wären Tipps echt super.
Dabei habe ich jetzt einfach erstmal gedacht, dass man auf dem Taschenrechner meinetwegen ein Wort eingibt und das dann im Serial Monitor erscheint.

Ein paar gute Antworten/Tipps wären echt hilfreich!

Grüße
Lorenz

EDIT:
Ich habe noch folgendes gefunden: Arduino to TI Calculator Linking Routines - Cemetech | Forum | Calculator Hardware, Electronics, Robotics [Topic]

Weiter unten ist auch ein Bild in Bezug auf die Anschlüsse. Leider steht dort nicht genau welcher Pin welcher Pin ist. Bis auf GND.
Vielleicht hilft das ja weiter.

Das kannst du im Zweifel auch einfach ausprobieren. Einer ist TX und der andere RX. Wenn es nicht geht rumdrehen. Da müssen aber dann auch Dinge wie Baudrate oder Anzahl der Start/Stop Bits richtig eingestellt sein.

Jap. Habe ich dann auch mal versucht.

Wie man vielleicht schon merkt, kenne ich mich eigentlich kaum mit Serieller Kommunikation aus. Ich finde mich eher in anderen Themengebieten zurecht :grin:

Also ich habe mir mal folgenden Code gebastelt:

#include <SoftwareSerial.h>

SoftwareSerial gtr(2, 3); //RX - TX

void setup()
{
  Serial.begin(9600);
  gtr.begin(9600);
}

void loop()
{
  if(gtr.available())
  {
    Serial.print(gtr.read());
  } 
}

Programm für Taschenrechner, falls sich einer damit auskennt:

ClrHome
Prompt A
Send(A

Also ich habe das Gefühl, dass es nicht so ganz funktioniert !
Immer wenn ich dann die Zahl sende erscheint im Serial Monitor immer 0.
Egal bei welcher Zahl.
Passende Baudrate habe ich auch nicht gefunden. Bei jeder kommt das gleiche Ergebnis.

Immer wenn ich dann die Zahl sende erscheint im Serial Monitor immer 0.

Na da zuckt doch schonmal was, wenn gtr irgendwas in den Eingangspuffer kriegt.

Wie stellst du beim TI-84 die serielle Geschwindigkeit ein ?
Probiers mal, wenn möglich,zunächst weit langsamer als 9600. ( 300 Bd sieht man noch flackern, wenn du statt/parallel zum Arduino eine LED anschliesst )

oder, very basic :
Ein 'U' ist übrigens 0x55 oder (bei 8N1)

 ........11111111[b]0[/b]101010101111111111111111111111111111111........
                 |
                 Startbit

.
Die 10 Flankenwechsel kannst du auch direkt mit digitalRead() und micros() erfassen, und so die serielle Geschwindigkeit "messen", jedenfalls im Bereich bis 9600 Bd ( ca. 10 Wechsel / ms oder 100 µs je Wechsel )

Leider kann man die Baudrate nicht einstellen.
Die liegt standardmäßig bei 9600.

Siehe: TI-84 Plus series - Wikipedia

Link port, 9.6 kbit/s

Von daher hat sich das schonmal mit der LED.

Mit dem Flankenwechsel muss ich mal schauen wie weit ich damit komme.
Mit 9600 geht das ordentlich ab. Muss mir da erstmal was passendes zusammen flicken.

Über weitere Tipps würde ich mich freuen !

Ich habe jetzt mal versucht Flankenwechsel festzustellen. Doch leider ohne Ergebnis.

Ich lese den RX Pin (TX habe ich auch mal aus Jucks gemacht hat aber natürlich absolut gar nichts angezeigt :D) von dem GTR mit digitalRead() aus.
Und dann lasse ich mir einfach den Wert im Serial Monitor ausgeben. Anfangs wird die ganzen Zeit eine 1 ausgegeben. Schonmal ein gutes Zeichen.
Aber wenn ich dann was mit dem GTR senden will, gibt es keinen Wechsel auf 0.

Jetzt weiß ich nicht genau wo das Problem liegen kann. Entweder auf der GTR oder der Arduino Seite ?!
Hoffe es könnte sich jemand melden der Erfahrung mit dem Programmieren vom TI 84 plus o.ä., weil ich bin da er so mittelmäßig.

Bei üblicher TTL Level Logik setzt der Sender das Sende-Signal in Ruhe auf High ( 5V ) gegenüber GND.
Daran kannst du schonmal erkennen, ob du den richtigen Pin erwischt hast, die Leitungen richtig gekreuzt hast, dein SoftSerial richtig konfiguriert hast.

Bei 9600 Bd ist ein Arduino schnell genug, um Signal-Wechsel per digitalRead() erkennen zu können. ( ca 100 µs ).
Wenn nicht, stimmt elektrisch etwas nicht, oder es kommen gar keine Daten an.

Ohne Oszi kannst du evtl eine LED so anschliessen, dass sie in Ruhe aus ist und bei Übertragung die 0V Level-Pulse anzeigt.
( Das ist leichter zu erkennen als wenn eine LED kuzzeitig aus geht: )

5V  ---- 1k ---  >| ---- Tx
GND -------------------- GND

Das geht mit gut mit jedem Arduino SoftSerial-Pin.

Mit dem TI 84 kenn ich mich leider nun gar nicht aus, da gibt es andere Foren :

Was ich auf die Schnelle gefunden habe, bezieht sich eher auf USB Kommunikation mit einer speziellen PC-Gegenseite oder um zwischen 2 Taschenrechnern Daten / Programme auszutauschen

Ich habe mal gerade die Spannung zwischen GND und jeweils TX und RX gemessen. Sind 3,278 V.

Wirft das schon irgendwelche Probleme auf ?

EDIT:
Ich habe das mit dem Flankenwechsel nochmal mit dem anderen Pin probiert. Ich glaube ich habe die ganze Zeit den falschen Pin verwendet :~
Da kann man zum Mindest ein Flankenwechsel erkennen. Aber das kommt mir alles etwas komisch vor. Denn wenn ich nichts sende erscheint natürlich eine 1 im Monitor. Wenn ich dann was sende kommen für eine etwas längere Zeit nur 0. Aber keine 1 dazwischen.
Und die Anzahl an 0 ist immer gleich. Habe jetzt mit 5 und 1 getestet.

merkwürdig...
und wenn kein Taschenrechner dran hängt ?
bzw. am Taschenrechner-Kabel, wenn kein Arduino dranhängt ?

bzw. am Taschenrechner-Kabel, wenn kein Arduino dranhängt ?

Genau. Da sind keine 5V zu messen...

EDIT:

und wenn kein Taschenrechner dran hängt ?

Da messe ich dann 5V

Das ist glaube ich nicht so gut ?! :roll_eyes:

Das seh ich dann als Fall für das Taschenrechner - Forum :wink:

Wenn du meinst. Ich weiß jetzt nur nicht was ich genau Fragen soll.

  • Was muss ich für ein Programm schreiben damit der Link Port angesprochen wird ?
  • Warum sind das keine 5V ?!

Worin besteht denn jetzt genau das Problem. So genau blicke ich da ja noch nicht durch :

EDIT:
Englisches Forum wird für mich jetzt allzu einfach. Ich kann sowas besser in Deutsch :grin:
Mal sehen was ich so finde

Die TI 83/84+ Serie arbeitet mit einem 3,3 V I/O-Port. Auf 5V kriegst du's nicht hoch, da intern Dioden eingebaut sind, die die Spannung zum Schutz der Schaltung begrenzen. Theoretisch sollte da mit den 1k Widerständen nichts passieren, wie du's schon hast (dadurch wrd die Übertragung dann nur ein bisschen langsamer). Du kannst auch dein Arduino mit 3,3 V betreiben, oder du hängst einen Voltage Translator rein.

Zum Thema Foren:
Aktive deutsche TI-Foren gibts eigentlich nicht mehr. Omnimaga und Cemetech sind sehr aktiv und haben auch deutsche Bereiche, aber wahrscheinlich wirst du auf Englisch am weitesten kommen.