So I’ve been busy accumulating hardware for my latest Arduino based project. I am using two different platforms. I am using an Arduino Uno with an SD card shield and an 16×2 LCD display initially because I can hook up the midi parts to it directly as I have done so in the past. The problem with it is that it does not have a lot of program memory and is very limited on data memory so while it’s a good platform to start experimenting with, it remains to be seen how far can get using it. On the plus side, it does have on chip EEPROM so it is possible to save settings across power ups.
Part two of the project (or it may become the only part, who knows) will use an Arduino Due. The Due has a LOT more program and data memory and runs over five times faster than the Uno (84Mhz vs 16 Mhz). The down side is a) no EEPROM so that’s something I’d have to add externally and b) it’s a 3.3 volt device so no hooking up the MIDI directly to the Due pins like I can with the Uno. That means I’ll have to build some sort of Midi shield for it to buffer the voltages both in and out. I cannot even use anything comercial as I need a custom number of MIDI ports for my little project.
This is the UNO hardware stack so far:
All the Hardware is from Adafruit. The LCD display itslf comes pre assembled except for header pins. The Shield it is mounted to is a kit. I added the sockets that the chip is in myself since I don’t like soldering directly to IC chips, too easy to kill them with the heat!
Programming it was pretty easy as all the information you need, as well as a handy dandy library for the LCD and buttons is available via the Adafruit web site.
And this is the DUE stack:
Can’t recall where I got the DUE from but the LCD and shields that that is mounted to are from eBay (vendor is coldtears). Came from Hong Kong, took about a week to get here so not too bad shipping wise. The LCD software uses a library from some guy on the web but it works very well and includes a demo. I did have to change a setting in the demo code to match the LCD screen (device type info) but the biggest problem I had was the Arduino IDE. Initially, it would not upload to the DUE and I was getting some errors during the compiles as well. Eventually I found that some functionality of the IDE to support the DUE that used to be included now has to be added separately. In addition there was a syntax error in one of the config files that was causing the warnings during the compile. Also the thrid party library I was using for the LCD had a .github directory in the library structure that should not have been there.
Once I tidied everything up though, the LCD part worked great.
Both the shield the LDC sits on and the LCD card itself have an SD card slot. The one on the shield is disabled by default so I chose to use the one on the LCD. It’s not very accessible but that’s not too much of a problem right now. The hardest part was figuring out what pin on the DUE corresponded to the Chip Select pin for the SD card reader. After unplugging things and following circuit board traces and digging around on the internet, I figured out it was pin 53. I changed the example SD card program in the Arduino IDE and tried it and it worked just fine.
So now I’ve got two hardware stack basically up and running, albeit without the MIDI part yet. Time to start programming (and researching the MIDI hardware for the DUE)!