Simple audio out with variable tempo using mbed templates

Dependencies:   mbed tsi_sensor

Committer:
mm73
Date:
Tue Jun 10 12:11:41 2014 +0000
Revision:
0:614598ef90dd
Tempo using slider

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mm73 0:614598ef90dd 1 #include "mbed.h"
mm73 0:614598ef90dd 2 #include "tsi_sensor.h"
mm73 0:614598ef90dd 3
mm73 0:614598ef90dd 4 /* This defines will be replaced by PinNames soon */
mm73 0:614598ef90dd 5 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
mm73 0:614598ef90dd 6 #define ELEC0 9
mm73 0:614598ef90dd 7 #define ELEC1 10
mm73 0:614598ef90dd 8 #elif defined (TARGET_KL05Z)
mm73 0:614598ef90dd 9 #define ELEC0 9
mm73 0:614598ef90dd 10 #define ELEC1 8
mm73 0:614598ef90dd 11 #else
mm73 0:614598ef90dd 12 #error TARGET NOT DEFINED
mm73 0:614598ef90dd 13 #endif
mm73 0:614598ef90dd 14
mm73 0:614598ef90dd 15 #define C3 131
mm73 0:614598ef90dd 16 #define D3 147
mm73 0:614598ef90dd 17 #define E3 165
mm73 0:614598ef90dd 18 #define F3 175
mm73 0:614598ef90dd 19 #define G3 196
mm73 0:614598ef90dd 20 #define A3 220
mm73 0:614598ef90dd 21 #define B3 247
mm73 0:614598ef90dd 22 #define C4 262
mm73 0:614598ef90dd 23 #define D4 294
mm73 0:614598ef90dd 24 #define E4 330
mm73 0:614598ef90dd 25 #define F4 349
mm73 0:614598ef90dd 26 #define G4 392
mm73 0:614598ef90dd 27 #define A4 440
mm73 0:614598ef90dd 28 #define B4 494
mm73 0:614598ef90dd 29 #define C5 523
mm73 0:614598ef90dd 30 #define A5 880
mm73 0:614598ef90dd 31 #define B5 988
mm73 0:614598ef90dd 32 #define Pause 1
mm73 0:614598ef90dd 33
mm73 0:614598ef90dd 34 Ticker tick;
mm73 0:614598ef90dd 35 DigitalOut led1(LED_RED);
mm73 0:614598ef90dd 36 DigitalOut led2(LED_GREEN);
mm73 0:614598ef90dd 37 DigitalOut gpo(D10);
mm73 0:614598ef90dd 38
mm73 0:614598ef90dd 39 void flip() {
mm73 0:614598ef90dd 40 led2 = !led2;
mm73 0:614598ef90dd 41 gpo = !gpo;
mm73 0:614598ef90dd 42 }
mm73 0:614598ef90dd 43
mm73 0:614598ef90dd 44 int main() {
mm73 0:614598ef90dd 45 int Notes_Hz[] = {G4, F4, G4, Pause, D3, B5, A4, Pause, G4, E3, E4, E4, E4, F4, G4,Pause,
mm73 0:614598ef90dd 46 G4, F4, G4, Pause, D3, B5, A4, Pause, G4, E3, E4, E4, E4, F4, G4, Pause};
mm73 0:614598ef90dd 47 int i;
mm73 0:614598ef90dd 48 float bpm =120;
mm73 0:614598ef90dd 49 //tick.attach(&flip, 0.7); // setup ticker to call flip led2 after 0.7 seconds
mm73 0:614598ef90dd 50 //PwmOut led3(LED_BLUE);
mm73 0:614598ef90dd 51 TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
mm73 0:614598ef90dd 52
mm73 0:614598ef90dd 53 while (1) {
mm73 0:614598ef90dd 54 //bpm = 2000.0 * tsi.readPercentage();
mm73 0:614598ef90dd 55 //led3 = 1.0 - tsi.readPercentage();
mm73 0:614598ef90dd 56 i = 0;
mm73 0:614598ef90dd 57 while (Notes_Hz[i]) {
mm73 0:614598ef90dd 58 led1 = !led1;
mm73 0:614598ef90dd 59 tick.attach(&flip, 0.5/Notes_Hz[i]);
mm73 0:614598ef90dd 60 wait (50.0/bpm); // bpm = beats per minute
mm73 0:614598ef90dd 61 tick.attach(&flip, 1);
mm73 0:614598ef90dd 62 wait (10.0/bpm); //
mm73 0:614598ef90dd 63 bpm = 400.0 * (1.0 - tsi.readPercentage());
mm73 0:614598ef90dd 64 i++;
mm73 0:614598ef90dd 65 }
mm73 0:614598ef90dd 66 }
mm73 0:614598ef90dd 67 }