Teams willing to explore other options could consider one of the newer OLED displays with I2C interfaces. These displays are much smaller than a 20×4 character LCD panel, which makes them harder to read at a distance. However, a 1.3 inch OLED will work for your fish tank display.
Note that larger and more expensive TFT displays would also work, but we do not recommend them (as of January 2020) over the less expensive 20×4 LCDs or the OLED displays described on this page.
OLED displays come in a variety of sizes and resolutions. The size is the diagonal dimension, usually reported in inches. The resolution is the number of individual pixels and is reported as the number of pixels in the horizontal and vertical directions. The resolution affects the memory usage by the software library – larger displays require more memory for your Arduino code. Some large displays are not feasible (at least in our testing) for use with an Arduino UNO.
We provide some examples in the following table. The price generally increases with physical size. We recommend at least a 1.3 inch diagonal display.
|0.66||64 x 48||SparkFun #14532||Too small, not recommended|
|0.96||128 x 64||Adafruit #326||Too small, not recommended|
|1.3||128 x 64||Adafruit #938||Works with Arduino UNO|
|1.3||128 x 64||HiLetgo (via Amazon)||Works with Arduino UNO and modified Adafruit library. See status update, below|
|1.54||128 x 64||Adafruit #2720||Not tested, may require too much memory for Arduino UNO|
|2.42||128 x 64||Adafruit #2719||Not tested, may require too much memory for Arduino UNO|
|1.54||128 x 128||SparkFun #15890||Needs more memory than available on Arduino UNO|
Be mindful that the OLED display libraries take a significant amount of memory. In our testing (January 2020), we found that the Adafruit SSD1306 and GFX libraries use less memory than the U8g2 library. That means that the more expensive ($20) Adafruit Qwiic-enabled 1.3" monochrome OLED that uses the SSD1306 chip has software support that is less likely to cause memory problems than the cheaper ($10) HiLetgo 1.3" monochrome OLED that uses the SSH1106 chip. Preliminary experiments in January 2020 indicate that a modified version of the Adafruit SSD1306 library may work with the SSD1106 driver chip and provide enough memory headroom for the fish tank control software.
Also, remember that we (GWR) are not experts in microcontroller software. We are trying to provide alternative solutions – alternatives in technology and in cost – in response to queries from students and our own curiosity. We will update these notes as time for testing and our schedule allows.
For details on how the Arduino platform uses memory, refer to the official documentation.
The photo below shows a 1.3inch monochrome OLED display that can be purchased for less than $10 in January 2020. Beware that this display requires the modified version of the Adafruit SSD1306 library to leave enough memory for fish tank control software.
The safer solution is to use the Adafruit Qwiic-enabled version, which is a little more expensive, but supports both I2C and SPI communication, and has very good software library support. In particular, the Adafruit SSD1306 and GFX libraries use memory efficiently so that there is likely to be no problem writing Arduino code to control the fish tank and display status on the Adafruit display.
We also highly recommend products from Adafruit and SparkFun because they continually develop high quality technical solutions – both hardware and software – and publish their designs as open source. Many of the cheaper alternatives you can buy on Amazon and elsewhere exist because they have copied Adafruit's and SparkFun's designs without having to invest the engineering effort to develop those designs. In other words, Adafruit and SparkFun pay the cost of engineering and other companies race to the bottom on production-only costs. Paying more for Adafruit and SparkFun products mean you are support the engineering that creates more innovation.