TFT HiFiDuino Pro Project

This is the home page for the TFT HiFiDuino Pro Project.

Here you will find the latest available version of the code, along with the revision history and some notes on the code. This project is a continuation of my TFT HiFiDUINO project which was based on the HiFiDuino project. It has been completely re-written from scratch to support the ES9038Pro and ES9028Pro DAC chips. Currently, it is weighing in at over 6.500 lines of code.

At the moment I’m using this code to control my upgraded-to-ES9028Pro-Buffalo-III but the code should also be suitable to other 9038/9028 DACs, like for example the upcoming Buffalo-SE-Pro or the DIYINHK boards. Note that the connection requirements are:

  • The I2C lines (SCA, SDL)
  • The GPIO4 line (on Buffalos this line drives the LOCK led)

The GPIO4 line is very handy to have, since it provides feedback to the controller whenever a lock/unlock condition happens or when the sampling rate changes, but the code could be adapted to work without it (like the original (TFT) HiFiDUINO code did, polling the DAC every couple of seconds to see if anything has changed).

So, this is the current version of the code (v1.06):  TFT HiFiDUINO PRO Code (199 downloads)

Here is a features list:

  • Enable full control over the configurable parameters of the ES9038Pro and ES9028Pro chips.
  • Full IR remote control functionality. Supports a large number of IR remote protocols.
  • Switch between 4 of the supported s/pdif inputs, as well as between I2S sources (2 x USB in the current version).
  • Save parameter settings for each input.
  • Configure different DPLL settings for each sampling rate and input.
  • Display incoming signal sampling rate and type.
  • Main display shows volume, input, sampling rate, signal type and seleted filter.
  • Different sub-menus for Settings, DPLL Settings and general DAC settings.
  • Option of displaying black text & graphics on white background (not complete).
  • Configurable option to operate either in preamp mode (with volume control) or with fixed 0db output.
  • Remote power on/off functionality (or always on – configurable in the code).

Here is a short video of the code in action:

Software Requirements:

Basic Hardware Requirements:

  • Arduino Due
  • 3.2″ TFT with resolution of 240 x 400 or 4.3″ TFT with resolution of 272 x 480, compatible with the UTFT library
  • 24LC256 EEPROM chip
  • Rotary Encoder
  • IR Receiver
  • Compatible IR remote control (Apple Remote or other)

I am including the necessary fonts and bitmaps in the ZIP. The fonts should go into your UTFT & UTFT_DLB directories, usually found in the Windows user’s Documents folders (for example, here: c:\Users\<user name>\Documents\Arduino\libraries\UTFT_DLB\).

The bitmaps should go into your sketch’s folder.

I have included in several places in the code SerialUSB output for debugging purposes. It may be commented out for performance purposes. However, it is very easy to re-enable for either debugging or viewing of the IR codes sent to the Arduino. You may use these IR codes to customize the code to support your remote by changing the relevant #define statements in the Remote control definitions section.

You should keep in mind that this code is designed to be used with the shield that I have developed for this purpose. The shield has its own page: Universal Signal Isolator Shield

However, the shield is not necessary if you are willing to hardwire in a few necessary components, like the 24LC256 EEPROM chip.

Here is the revision history:

v1.06 23/07/2017:

  • Initial release.