AmpController Class Test

Dependencies:   Amp Envelope mbed-rtos mbed

main.cpp

Committer:
ryood
Date:
2016-06-23
Revision:
0:e8cd21a7412a
Child:
2:fbc776fc8e12

File content as of revision 0:e8cd21a7412a:

/*
 * EnvelopeをMCP4922に出力するテスト
 *
 * 2016.06.23
 *
 */

#include "mbed.h"
#include "rtos.h"
#include "Envelope.h"
#include "SpiAmpController.h"

#define AMP_VREF    0x0fff
#define SPIM_RATE   1000000

const int envLength = 25;

AnalogIn levelIn(A0);
AnalogIn durationIn(A1);
AnalogIn decayIn(A2);
AnalogIn sustainIn(A3);

SPI spiM(SPI_MOSI, SPI_MISO, SPI_SCK);

int main()
{
    spiM.format(8, 0);
    spiM.frequency(SPIM_RATE);
       
    // Envelope(level, length, duration, decay, sustain)
    Envelope envelope(4095, envLength, envLength*3/4, envLength/2, 2047);
    SpiAmpController ampController(&spiM, D8, D7);
    ampController.setVref(AMP_VREF);
        
    printf("\r\n\n*** Amp Controller Test ***\r\n");
    envelope.init();
    int cnt = 0;
    int vref = 0;
    while (true) {
        ampController.outDca(envelope.getModLevel());
        envelope.update();
        
        cnt++;
        if (cnt == envLength) {
            cnt = 0;
            envelope.setLevel(levelIn * 4095);
            envelope.setDuration(durationIn * envLength);
            envelope.setDecay(decayIn * envLength);
            envelope.setSustain(sustainIn * 4095);
            
            /*
            printf("%d\t%d\t%d\t%d\t%d\t\r\n",
                envelope.getLevel(), envelope.getLength(), envelope.getDuration(), envelope.getDecay(), envelope.getSustain());
            */
            envelope.init();
            ampController.setVref(vref);
            vref += 0x10;
            if (vref > 0x0fff) {
                vref = 0;
            }
        }
        Thread::wait(5);
    }
}