I2C would work fine, SPI would also be good. I would suggest that you have Vcc, GND, (insert required pins for your choice of serial protocol), AND also have a pin that is connected to GND on the cartriges’ side but connected to a digital input pin (with internal pullup enabled) on the motherboard side - that way the motherboard knows when you plug a cartridge in and when you disconnect one.
yes thats the plan! this would be the thing to trigger screen clearing when there is no cartridge plugged in.
Make the cartridges really simple: just a couple of traces connecting different pads.
If your Arduino finds that pins 0 and 1 are connected and no others are, then it can print “Cartridge A” just fine.
This actually is kind of a brilliant idea. The only problem would be, every time I develop a new cartridge I would have to reprogram the motherboard. I will have to think on this idea but it might make things easier.
Will the stuff that gets displayed be resident in the cartridge, or does the cartridge merely identify itself and that triggers the display of text associated with that cartridge, but all cartridges’ texts are resident in the primary device?
(Reads like the former, but just for clarity?)
Thats exactly right! the text would live on the cartridges, along with eeprom data.
I didn’t realize you were thinking of having an Arduino on the cartridge as well as on the motherboard.
With a pair of Arduinos you have many communication options, including Serial - which I think is what I would use.
However if you prefer to use SPI then sending any kind of data over SPI just requires sending it byte by byte
If you are interested in a Serial option have a look at the examples in Serial Input Basics - simple reliable ways to receive data. There is also a parse example to illustrate how to extract numbers from the received text.
The technique in the 3rd example will be the most reliable. It is what I use for Arduino to Arduino and Arduino to PC communication.
You can send data in a compatible format with code like this (or the equivalent in any other programming language)
Serial.print('<'); // start marker
Serial.print(’,’); // comma separator
Serial.println(’>’); // end marker
excellent, this is what I’m thinking will be the best option. One thing I’ve been looking for info on is if I use a 5v arduino as the cartridge, and a 3.3v arduino as the motherboard/reader, would I run into different voltage issues? Could I simply voltage divide the 5v down to 3.3?