AutoScope : Part 5 : Displays

Dr.  Dan Kott is a task master. At this point I’ve got steppers working, IR and Joystick Control, and have figured out our 3D printed part issues (at least when it comes to gears). In about a week. But, what does he have, more!

Take this with a grain of salt, because I consider Dan a friend. This is an inspiring person. A Renaissance Man in the truest sense. Tell me how many 85+ year olds are have more Raspberry Pis and Arduinos than most people have TVs. I’ve joked with him that his living room has enough computing power to send mankind to the moon. But, the moon would not be good enough for him — Mars, at least.

So, Dan wanted a display. I wanted to go with a large scale LCD display, but — I don’t have enough free pins on the microcontroller. (Most basic LCDs require at least 6 pins, and I’m using a cheapie Nano — which is busy doing motor control and IR remotes.)

And so I hunted down a cheap I2C (serial) OLED display on Amazon. These are pretty amazing devices, since you just need two pins to drive them (clock and data), plus power. Horray! A display that uses fewer pins.

AutoScope_Display_MainMenu

Oh, but so small! Here it is next to a larger sized LCD display:

AutoScope_DisplaysAnd can you guess what problem I had? Not enough I/O pins? No, I went with a serial display to avoid that. But, the library size!

LadyAda has created an excellent OLED library for this type of display. But, when I try to compile — not enough memory. At first I was going to “slim down” her library. But I gave up. Instead, as a good programmer does, s/he finds an optimized version of the code.

Now, don’t get me wrong, Limor’s library is excellent. But I didn’t need graphics. I just needed text. And found (on github, again) a basic library called SSD1306Ascii. The SSD part is the display driver chip. The Ascii tells us that it only displays ASCII text (letters/numbers/basic characters).

With this slimmed down library I was able to compile and load the code onto my Arduino Nano board and get things running. With the remote, I can even enter direct coordinates:

AutoScope_Display_Coordinates

Next up: improving the motor mounts