GR-peach and MRP121

Dependencies:   EasyPlaybackPWM MPR121 PwmOutSpeaker SDBlockDevice_GR_PEACH USBHost_custom

Fork of MPR121_GR-PEACH by Hideki Tanaka

main.cpp

Committer:
tendots
Date:
2017-10-23
Revision:
12:3b6f4dccd101
Parent:
11:b95db1f04d7c

File content as of revision 12:3b6f4dccd101:

#include "mbed.h"
#include "MPR121.h"
#include "EasyPlaybackPWM.h"
#include "EasyDec_WavCnv2ch.h"
#include "FATFileSystem.h"
#include "SDBlockDevice_GR_PEACH.h"
#include "USBHostMSD.h"


#define FILE_NAME_LEN          (64)
#define MOUNT_NAME             "storage"
#define TAG_BUFF_SIZE          (64 + 1) //null-terminated



Serial pc(USBTX, USBRX);
DigitalOut myled(LED1);

//audio
static EasyPlaybackPWM AudioPlayer(P4_5, P4_7);


//mpr121
I2C i2c(P1_7, P1_6);
InterruptIn irq(P1_11);
MPR121 touch_pad(i2c, irq, MPR121::ADDR_VSS);

Ticker timer;
int playSE = 0;


DIR  * d;
struct dirent * p;
FATFileSystem fs("storage");
SDBlockDevice_GR_PEACH sd;
USBHostMSD usb;
    
    
void attime(){
    //printf("timer");
    //audio check and play
    
    /*
    if(playSE != 0){
        
        AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".wav");
        AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".WAV");
        while(1) {
             if (sd.connect()) {
                fs.mount(&sd);
                break;
            }
            
        }
        switch (playSE) {
            case 0:
            break;
            
            case 1:
            AudioPlayer.play("/storage/nn.wav");
            break;
            
            case 2:
            AudioPlayer.play("/storage/yonda.wav");
            break;
            
            case 3:
            AudioPlayer.play("/storage/tonton.wav");
            break;
            
            case 4:
            AudioPlayer.play("/storage/tontonton.wav");
            printf("play");
            break;
            
            case 5:
            AudioPlayer.play("/storage/kusuguttai.wav");
            break;
            
            case 6:
            AudioPlayer.play("/storage/kimochiii.wav");
            break;
            
            case 7:
            AudioPlayer.play("/storage/hya.wav");
            break;
            
            case 8:
            AudioPlayer.play("/storage/mugyu.wav");
            break;
            
            case 9:
            AudioPlayer.play("/storage/onakasuita.wav");
            break;
        }
    }
    playSE = 0;
    */
    
}

void play(){
    FILE *fp;
    fp = fopen("/storage/yonda.wav", "r");
    AudioPlayer.play("/storage/yonda.wav");
    fclose(fp);
    fp = NULL;
}

int main()
{
    //SD-card & audio
    //char file_path[sizeof("/"MOUNT_NAME"/") + FILE_NAME_LEN];

    // decoder setting
    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".wav");
    AudioPlayer.add_decoder<EasyDec_WavCnv2ch>(".WAV");

    // volume control
    AudioPlayer.outputVolume(1);  // Volume control (min:0.0 max:1.0)

    // wait for the storage device to be connected
    printf("Finding a storage...\r\n");
    
    while(1) {
         if (sd.connect()) {
            fs.mount(&sd);
            break;
        }
    }
    
    printf("done\r\n");
    
    //audio check timer
    playSE = 4;
    timer.attach(&attime,1);
    //AudioPlayer.play("/storage/mugyu.wav");
    play();
    
    bool pa = AudioPlayer.is_paused();
    printf("%d", pa);
    //touch pad
    touch_pad.init();
    touch_pad.enable();
    //touch_pad.registerDump(pc);
    
     while(1) {
        uint16_t button_val;
        if(touch_pad.isPressed()) {
            printf("if");
            button_val = touch_pad.buttonPressed();
            pc.printf("button = 0x%04x\n\r", button_val);
            myled = (button_val>0) ? 1 : 0;
            //AudioPlayer.pause(true);
            
        }else{
            printf("else");
            button_val = 0;
        }
        
        if(button_val != 0x0000){
                play();
                wait(0.3);
                break;
        }
        
        //wait(0.1);
    }

}