test

Dependencies:   SDFileSystem WavePlayer_HelloWorld mbed wave_player ADXL345_I2C

Fork of WavePlayer_HelloWorld by jim hamblen

main.cpp

Committer:
Hayato0o
Date:
2017-05-08
Revision:
3:bc43ad9e80b0
Parent:
2:6e352047ba09

File content as of revision 3:bc43ad9e80b0:

// 2017/02/26 ver 0
// 2017/04/07 ver 1
// 美和ミク編みぐるみ用

#include "mbed.h"
#include "SDFileSystem.h"
#include "wave_player.h"
#include "ADXL345_I2C.h"

#define THU 30
 
//ADXL345 accelerometer(p5, p6, p7, p8);
ADXL345_I2C accelerometer(p28, p27);
Serial pc(USBTX, USBRX);
Timeout fpr;

SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
DigitalOut led1(LED1);
DigitalOut spEn(p20);

AnalogOut DACout(p18);

wave_player waver(&DACout);

FILE *wave_file;

int wavNum = 0;

void ampDen() {
    spEn = 0; 
}

void ampEn() {
    spEn = 1; 
    fpr.attach(&ampDen, 0.7);   
}

void play_wav(void) {
    switch(wavNum) {
        case 0:
            wave_file=fopen("/sd/dai.wav","r");
            fpr.attach(&ampEn, 0.2);
            waver.play(wave_file);
            wavNum++;
            break;
            
        case 1:
            wave_file=fopen("/sd/nani.wav","r");
            fpr.attach(&ampEn, 0.2);
            waver.play(wave_file);
            wavNum++;
            break;
        
        case 2:
            wave_file=fopen("/sd/ure.wav","r");
            fpr.attach(&ampEn, 0.2);
            waver.play(wave_file);
            wavNum++;
            break;
            
        case 3:
            wave_file=fopen("/sd/ari.wav","r");
            fpr.attach(&ampEn, 0.2);
            waver.play(wave_file);
            wavNum++;
            break;
            
        case 4:
            wave_file=fopen("/sd/moto.wav","r");
            fpr.attach(&ampEn, 0.2);
            waver.play(wave_file);
            wavNum = 0;
            break;
    }
    
    
    fclose(wave_file);
}

int main()
{
    int readings[3] = {0, 0, 0};
    
    spEn = 0;
    
    //Go into standby mode to configure the device.
    accelerometer.setPowerControl(0x00);
 
    //Full resolution, +/-16g, 4mg/LSB.
    accelerometer.setDataFormatControl(0x0B);
     
    //3.2kHz data rate.
    accelerometer.setDataRate(ADXL345_3200HZ);
 
    //Measurement mode.
    accelerometer.setPowerControl(0x08);
    
    while(1) {
        accelerometer.getOutput(readings);
         
        //13-bit, sign extended values.
        pc.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);
        
        // X, YでTHU以上の加速度入力で反応
        if((int16_t)readings[0] > THU) {
            play_wav();    
        } else if((int16_t)readings[1] > THU) {
            play_wav();    
        }
        
        wait(0.1);    
    }
}