![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
テスト
Dependencies: C12832 USBHost mbed MMA7660 wave_player
Fork of app-board-Speaker by
Diff: main.cpp
- Revision:
- 15:46ca600425fc
- Parent:
- 14:3b123bcdd79c
- Child:
- 16:12f30425ba88
--- a/main.cpp Mon Dec 12 12:10:51 2016 +0000 +++ b/main.cpp Tue Dec 13 08:02:54 2016 +0000 @@ -10,6 +10,9 @@ #define THRESH 80 #define COUNT_MAX 15 #define DIM 3 +#define NUM_OF_NOTES 21 +#define NUM_OF_SCALE 2 + #include "C12832.h" #include "mbed.h" #include "rtos.h" @@ -29,7 +32,7 @@ PwmOut led3(p25); Semaphore three_slots(1); Timer for_chat; -AnalogIn mypotentiometer(p19); + //for acceleration sonsor MMA7660 acc(p28, p27); @@ -38,13 +41,24 @@ //for music AnalogOut DACout (p18); wave_player waver(&DACout); +AnalogIn volumeMeter(p19); +AnalogIn musicSwitch(p20); +InterruptIn push(p14); +InterruptIn right(p16); +InterruptIn left(p13); int i=0; int count = 0; +bool pushed = false; +int i_for20mm; +int i_for20mm_old = 0; +int scale = 0; float mm[]={mC,mD,mE,mF,mG,mA,mB,mC*2,mD*2,mE*2,mF*2,mG*2,mA*2,mB*2,mC*4}; -float mmm[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//has 21 +float mmm[]={mC,mD,mE,mF,mG,mA,mB,mC*2,mD*2,mE*2,mF*2,mG*2,mA*2,mB*2,mC*4, mD*4,mE*4,mF*4,mG*4,mA*4,mB*4};//has 21 +float notes[NUM_OF_SCALE][NUM_OF_NOTES] = { {mC,mD,mE,mF,mG,mA,mB,mC*2,mD*2,mE*2,mF*2,mG*2,mA*2,mB*2,mC*4, mD*4,mE*4,mF*4,mG*4,mA*4,mB*4}, + {mC,mC,mC,mC,mC,mC,mC,mC,mC,mC,mF*2,mG*2,mA*2,mB*2,mC*4, mD*4,mE*4,mF*4,mG*4,mA*4,mB*4}}; void intRise(void) { if(for_chat.read_ms()>THRESH); @@ -73,6 +87,50 @@ } } +void On(void) +{ + pushed = true; +} + +void Off(void) +{ + pushed = false; +} + +void scaleUp(void) +{ + if(for_chat.read_ms()>THRESH) ; + { + if (scale == NUM_OF_SCALE - 1) + { + scale = 0; + } else + { + scale++; + } + //lcd.locate(10,10); + //lcd.printf("scale %d", scale); + } + for_chat.reset(); +} + +void scaleDown(void) +{ + if(for_chat.read_ms()>THRESH) ; + { + if (scale == 0) + { + scale = NUM_OF_SCALE - 1; + } else + { + scale--; + } + //lcd.locate(10,10); + //lcd.printf("scale %d", scale); + } + for_chat.reset(); +} + void r_thread(void const *argument) { @@ -293,12 +351,14 @@ void disp_thread(void const *argument) { - float mpmeter; - int i_for20mm; + float volume; + float mswitch; + while (true) { - mpmeter = mypotentiometer.read(); - i_for20mm = (int)(mpmeter*20);//change 20 param + volume = volumeMeter.read(); + mswitch = musicSwitch.read(); + i_for20mm = (int)(mswitch*20);//change 20 param //wait(mpmeter); //lcd.locate(0,10); //lcd.printf("mpmeter = %f", mpmeter); @@ -307,13 +367,29 @@ //lcd.locate(0,10); //lcd.printf("i = %d ", i_for20mm); - // example sound (odd sound) - mmm[i_for20mm] = mpmeter*100; // mmm[0-20] <- any param - sp1.period(1.0/(mmm[i_for20mm])); - sp1.write(0.5f); + if (i_for20mm != i_for20mm_old) + { + sp1.period(1.0/(notes[scale][i_for20mm])); + } + i_for20mm_old = i_for20mm; + + if(pushed) + { + sp1.write(volume); + } + else + { + sp1.write(0.0f); + } + + for_chat.reset(); ///////////////////////////// + + //for debug + //lcd.locate(0,0); + //lcd.printf("volume = %f", volume); //wait(mpmeter); - Thread::wait(2); + Thread::wait(50); } } @@ -324,6 +400,12 @@ for_chat.start(); myup.fall(&intRise); mydown.fall(&intFall); + push.rise(&On); + push.fall(&Off); + right.rise(&scaleUp); + left.rise(&scaleDown); + + //Thread thread1(r_thread,(void *)"Th 1"); //Thread thread2(g_thread,(void *)"Th 2"); //Thread thread3(b_thread,(void *)"Th 3"); @@ -342,7 +424,7 @@ //for music file FILE *wave_file; //sp1.period(1.0 / 16000.0); - wave_file = fopen("/usb/music/BGMforMBED2-lowQ.wav", "r"); + wave_file = fopen("/usb/music/BGMforMBED2.wav", "r"); waver.play(wave_file); fclose(wave_file);