test

Dependencies:   SDFileSystem WavePlayer_HelloWorld mbed wave_player ADXL345_I2C

Fork of WavePlayer_HelloWorld by jim hamblen

Committer:
Hayato0o
Date:
Mon May 08 16:59:12 2017 +0000
Revision:
3:bc43ad9e80b0
Parent:
2:6e352047ba09
ver 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hayato0o 3:bc43ad9e80b0 1 // 2017/02/26 ver 0
Hayato0o 3:bc43ad9e80b0 2 // 2017/04/07 ver 1
Hayato0o 3:bc43ad9e80b0 3 // 美和ミク編みぐるみ用
4180_1 1:5b8e223e983d 4
4180_1 1:5b8e223e983d 5 #include "mbed.h"
4180_1 1:5b8e223e983d 6 #include "SDFileSystem.h"
4180_1 1:5b8e223e983d 7 #include "wave_player.h"
Hayato0o 3:bc43ad9e80b0 8 #include "ADXL345_I2C.h"
4180_1 1:5b8e223e983d 9
Hayato0o 3:bc43ad9e80b0 10 #define THU 30
Hayato0o 3:bc43ad9e80b0 11
Hayato0o 3:bc43ad9e80b0 12 //ADXL345 accelerometer(p5, p6, p7, p8);
Hayato0o 3:bc43ad9e80b0 13 ADXL345_I2C accelerometer(p28, p27);
Hayato0o 3:bc43ad9e80b0 14 Serial pc(USBTX, USBRX);
Hayato0o 3:bc43ad9e80b0 15 Timeout fpr;
4180_1 1:5b8e223e983d 16
4180_1 1:5b8e223e983d 17 SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card
Hayato0o 3:bc43ad9e80b0 18 DigitalOut led1(LED1);
Hayato0o 3:bc43ad9e80b0 19 DigitalOut spEn(p20);
Hayato0o 2:6e352047ba09 20
4180_1 1:5b8e223e983d 21 AnalogOut DACout(p18);
4180_1 1:5b8e223e983d 22
4180_1 1:5b8e223e983d 23 wave_player waver(&DACout);
4180_1 1:5b8e223e983d 24
Hayato0o 3:bc43ad9e80b0 25 FILE *wave_file;
Hayato0o 3:bc43ad9e80b0 26
Hayato0o 3:bc43ad9e80b0 27 int wavNum = 0;
Hayato0o 3:bc43ad9e80b0 28
Hayato0o 3:bc43ad9e80b0 29 void ampDen() {
Hayato0o 3:bc43ad9e80b0 30 spEn = 0;
Hayato0o 3:bc43ad9e80b0 31 }
Hayato0o 3:bc43ad9e80b0 32
Hayato0o 3:bc43ad9e80b0 33 void ampEn() {
Hayato0o 3:bc43ad9e80b0 34 spEn = 1;
Hayato0o 3:bc43ad9e80b0 35 fpr.attach(&ampDen, 0.7);
Hayato0o 3:bc43ad9e80b0 36 }
Hayato0o 3:bc43ad9e80b0 37
Hayato0o 3:bc43ad9e80b0 38 void play_wav(void) {
Hayato0o 3:bc43ad9e80b0 39 switch(wavNum) {
Hayato0o 3:bc43ad9e80b0 40 case 0:
Hayato0o 3:bc43ad9e80b0 41 wave_file=fopen("/sd/dai.wav","r");
Hayato0o 3:bc43ad9e80b0 42 fpr.attach(&ampEn, 0.2);
Hayato0o 3:bc43ad9e80b0 43 waver.play(wave_file);
Hayato0o 3:bc43ad9e80b0 44 wavNum++;
Hayato0o 3:bc43ad9e80b0 45 break;
Hayato0o 3:bc43ad9e80b0 46
Hayato0o 3:bc43ad9e80b0 47 case 1:
Hayato0o 3:bc43ad9e80b0 48 wave_file=fopen("/sd/nani.wav","r");
Hayato0o 3:bc43ad9e80b0 49 fpr.attach(&ampEn, 0.2);
Hayato0o 3:bc43ad9e80b0 50 waver.play(wave_file);
Hayato0o 3:bc43ad9e80b0 51 wavNum++;
Hayato0o 3:bc43ad9e80b0 52 break;
Hayato0o 3:bc43ad9e80b0 53
Hayato0o 3:bc43ad9e80b0 54 case 2:
Hayato0o 3:bc43ad9e80b0 55 wave_file=fopen("/sd/ure.wav","r");
Hayato0o 3:bc43ad9e80b0 56 fpr.attach(&ampEn, 0.2);
Hayato0o 3:bc43ad9e80b0 57 waver.play(wave_file);
Hayato0o 3:bc43ad9e80b0 58 wavNum++;
Hayato0o 3:bc43ad9e80b0 59 break;
Hayato0o 3:bc43ad9e80b0 60
Hayato0o 3:bc43ad9e80b0 61 case 3:
Hayato0o 3:bc43ad9e80b0 62 wave_file=fopen("/sd/ari.wav","r");
Hayato0o 3:bc43ad9e80b0 63 fpr.attach(&ampEn, 0.2);
Hayato0o 3:bc43ad9e80b0 64 waver.play(wave_file);
Hayato0o 3:bc43ad9e80b0 65 wavNum++;
Hayato0o 3:bc43ad9e80b0 66 break;
Hayato0o 3:bc43ad9e80b0 67
Hayato0o 3:bc43ad9e80b0 68 case 4:
Hayato0o 3:bc43ad9e80b0 69 wave_file=fopen("/sd/moto.wav","r");
Hayato0o 3:bc43ad9e80b0 70 fpr.attach(&ampEn, 0.2);
Hayato0o 3:bc43ad9e80b0 71 waver.play(wave_file);
Hayato0o 3:bc43ad9e80b0 72 wavNum = 0;
Hayato0o 3:bc43ad9e80b0 73 break;
Hayato0o 3:bc43ad9e80b0 74 }
Hayato0o 3:bc43ad9e80b0 75
Hayato0o 3:bc43ad9e80b0 76
Hayato0o 3:bc43ad9e80b0 77 fclose(wave_file);
Hayato0o 3:bc43ad9e80b0 78 }
Hayato0o 3:bc43ad9e80b0 79
4180_1 1:5b8e223e983d 80 int main()
4180_1 1:5b8e223e983d 81 {
Hayato0o 3:bc43ad9e80b0 82 int readings[3] = {0, 0, 0};
Hayato0o 3:bc43ad9e80b0 83
Hayato0o 3:bc43ad9e80b0 84 spEn = 0;
Hayato0o 3:bc43ad9e80b0 85
Hayato0o 3:bc43ad9e80b0 86 //Go into standby mode to configure the device.
Hayato0o 3:bc43ad9e80b0 87 accelerometer.setPowerControl(0x00);
Hayato0o 3:bc43ad9e80b0 88
Hayato0o 3:bc43ad9e80b0 89 //Full resolution, +/-16g, 4mg/LSB.
Hayato0o 3:bc43ad9e80b0 90 accelerometer.setDataFormatControl(0x0B);
Hayato0o 3:bc43ad9e80b0 91
Hayato0o 3:bc43ad9e80b0 92 //3.2kHz data rate.
Hayato0o 3:bc43ad9e80b0 93 accelerometer.setDataRate(ADXL345_3200HZ);
Hayato0o 3:bc43ad9e80b0 94
Hayato0o 3:bc43ad9e80b0 95 //Measurement mode.
Hayato0o 3:bc43ad9e80b0 96 accelerometer.setPowerControl(0x08);
Hayato0o 3:bc43ad9e80b0 97
Hayato0o 3:bc43ad9e80b0 98 while(1) {
Hayato0o 3:bc43ad9e80b0 99 accelerometer.getOutput(readings);
Hayato0o 3:bc43ad9e80b0 100
Hayato0o 3:bc43ad9e80b0 101 //13-bit, sign extended values.
Hayato0o 3:bc43ad9e80b0 102 pc.printf("%i, %i, %i\n", (int16_t)readings[0], (int16_t)readings[1], (int16_t)readings[2]);
Hayato0o 3:bc43ad9e80b0 103
Hayato0o 3:bc43ad9e80b0 104 // X, YでTHU以上の加速度入力で反応
Hayato0o 3:bc43ad9e80b0 105 if((int16_t)readings[0] > THU) {
Hayato0o 3:bc43ad9e80b0 106 play_wav();
Hayato0o 3:bc43ad9e80b0 107 } else if((int16_t)readings[1] > THU) {
Hayato0o 3:bc43ad9e80b0 108 play_wav();
Hayato0o 3:bc43ad9e80b0 109 }
Hayato0o 3:bc43ad9e80b0 110
Hayato0o 3:bc43ad9e80b0 111 wait(0.1);
Hayato0o 3:bc43ad9e80b0 112 }
4180_1 1:5b8e223e983d 113 }