I have an idea for a project and can use some advice on what resources to consult next.

Context:
I teach high school physics and I would like to build some lab equipment for a rotational motion experiment. I have some background using Arduinos and think I can easily make the Arduino control a motor and monitor its speed. But I'm looking for a cheap and easy way to input data to the Arduino and display the rate at which the motor is spinning. All of my students have TI calculators, so rather than buying LCD displays and keypads for each setup, I was thinking...

Project:
I'd like to connect a TI Calculator to the Arduino using the calculator's link port. I only need the calculator to do the most basic things:
1) It must be able to read a three-digit number (the RPM) sent from the Arduino and display it on the calculator's screen;
2) It must be able to send numbers typed on the keypad to the Arduino.

I have never done any z80 programming. I'm guessing I won't have to learn too much of it, but how should I get started? Are there code snippets available that would do these things?

I have not yet done any Arduino projects that send and receive serial data, except through the USB port to the computer. I'm guessing I will need to use RX and TX on pins 0 and 1. Do I use these in conjunction with software serial library? Any recommendations on tutorials or examples I should look at?

Thanks for any advice!

Sean
Well I know Kerm has written routines for interfacing with TI's link protocol on the Arduino. I'd bet you could then interface with it via TI-Basic's Get( and Send( commands if you are worried about learning ASM. The other option is to learn ASM, "Learn TI 83 Plus ASM in 28 days" is the popular tutorial there, and write your own linking protocol for use with this project. I'm sure Kerm can help you with both of those much more since he wrote the code for the globalCalcnet Arduino bridge code, let alone designing all of gCn.
The link protocol for the TI calculator can be found in this set of documents.

I used the TI link protocol in my TV Demonstrator project but could not get Send() from the calculator to work properly. My workaround was to perform a silent variable request to retrieve the value following a Send(). The code may (or may not) be useful as a reference, though.
As noted in this YouTube video of mine, I wrote routines that can successfully send and receive the TI link protocol on an Arduino. As you know from our email communications, I also have the gCn libraries for the Arduino that communicate with Doors CS's CALCnet routines. I believe either method would be fairly straightforward for your application, but in both cases you'd most likely need to learn a bit of z80 ASM. I haven't personally tried to do any work with Get() and Send(), since I know they're CBL/CBR-specific.
If you use Get()/Send() then there's no need to write any Z80 assembly, you could use a TI-BASIC program or just control the device from the home screen. That's what I did with my TV Demonstrator project.
benryves wrote:
If you use Get()/Send() then there's no need to write any Z80 assembly, you could use a TI-BASIC program or just control the device from the home screen. That's what I did with my TV Demonstrator project.
Does Get/Send work with the same protocol as the general TI-OS packets? I would imagine all I would have to do is implement proper encapsulation/decapsulation on the Arduino side.
Yes, they do, but they're not documented to my knowledge. I connected a real calculator to an emulated one and sniffed the data exchanged during GetCalc() to write an implementation of Get(), but there is no SendCalc() and I do not have a CBL/CBR to experiment with. I got as far as determining which variable had been requested by Send() and turned that into a silent link variable request rather than sending back the data correctly. This works on the home screen but won't in a program as the calculator is not in a fit state to respond to silent variable requests.
Ah, that makes sense, and seems like a fairly ingenious workaround given the circumstances. Perhaps our dear BrandonW would be kind enough to do some sniffing for us, or has experience with it? I'd recommend we (and perhaps the OP) try to sync up with him during HCWP tomorrow.

Spiff, let me also recommend that you Introduce Yourself if you get a chance.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement