Hi guys,
I have been looking for good, easy and scalable software for BIIIDAC, but couldn't find anything useful. I know, there are some guys writing the software, but it is mostly C or Microcontroller based and very difficult to follow or change.
I decided to write easy to follow software, based on C++ classes, which is as close to TPA Firmware as possible.
I use Atom + PlatformIO and Arduino DUE for this.
For remote control i use Apple Remote and the Display is 4,3" 480x272 TFT LCD mit Touchscreen SSD1963.
The software is based on TPA firmware, it behaves the same way: power up, reset, communication, configurateion, etc... is all based on TPA firmware.
The software gives you at this stage basic interaction, like volume change and input change, the rest of the configuration is read from the switches on the BIII board.
This software is easily scalable, you can replace any of the classes with your own or modify existing.
I have added some "interfaces" for editing, like eeprom or touch (didnt test the touch, but its easy to figure out how it works and correct it).
I also prepared the settings page for the tft screen so one can add it later on.
Main function is literaly 20 lines of code, it just takes the action from interface and apply to the DAC class.
As I said, the heart of the DAC Class is TPA Software.
The configuration file is the copy of TPA, ES9028_38.h file.
DAC class constructor is build of TPA functions, slightly modified for Arduino needs ( i use Wire.h for I2C communication ), but the funtions:
powerDACup();
initializeDAC();
configureDAC();
are practically the same you get with TPA firmware, those work the same way and are called the way TPA is doing it.
Simplified soft looks like this:
//--------------------------------------
setup:
dac = new DAC();
remoteInterface = new RemoteInterface();
touchInterface = new TouchInterface();
tftGraphics = new TFTGraphics();
//---------------------
loop:
action = remoteInterface->getAction();
if( action == NONE )
action = touchInterface->getAction( MAIN_MENU );
if( action == NONE ){
dac->readSwitchStates();
}
switch ( action ){
case NONE:
break;
case CHANNEL_LEFT:
tftGraphics->printChannel( dac->decreaseInput() );
break;
case CHANNEL_RIGHT:
tftGraphics->printChannel( dac->increaseInput() );
break;
case VOLUME_UP:
tftGraphics->printVolume( dac->increaseVolume() );
break;
case VOLUME_DOWN:
tftGraphics->printVolume( dac->decreaseVolume() );
break;
case ENTER:
tftGraphics->printVolume( dac->muteVolume() );
break;
default:
break;
}
action = NONE;
//-------------------------
All you need is Atom + Platform IO + ( Arduino Due, remote, TFT) and the repository:
GitHub - poninskit/TPA_Buffalo_IIIsePro38_Software: c++ Microcontroller Software for Buffalo III 9038 Pro DAC
happy coding.
here is how it looks like:
Optional DAC settings page could be written like this:
and this is how it works:
VID_20190507_095456.mp4 - Google Drive