Wave file player helloworld for mbed LCP1768 running mbed OS 5. See https://os.mbed.com/users/4180_1/notebook/using-a-speaker-for-audio-output/

Dependencies:   wave_player

Committer:
HighTide
Date:
Tue Oct 01 00:41:43 2019 +0000
Revision:
0:9ed9bcd7cc87
Child:
2:509911a88b64
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HighTide 0:9ed9bcd7cc87 1 #include "mbed.h"
HighTide 0:9ed9bcd7cc87 2 #include "rtos.h"
HighTide 0:9ed9bcd7cc87 3 #include "SDBlockDevice.h"
HighTide 0:9ed9bcd7cc87 4 #include "FATFileSystem.h"
HighTide 0:9ed9bcd7cc87 5 #include "wave_player.h"
HighTide 0:9ed9bcd7cc87 6
HighTide 0:9ed9bcd7cc87 7 // LED Components
HighTide 0:9ed9bcd7cc87 8 PwmOut led(LED1);
HighTide 0:9ed9bcd7cc87 9
HighTide 0:9ed9bcd7cc87 10 // SD File System Components
HighTide 0:9ed9bcd7cc87 11 SDBlockDevice sd(p5, p6, p7, p8);
HighTide 0:9ed9bcd7cc87 12 FATFileSystem fs("sd");
HighTide 0:9ed9bcd7cc87 13
HighTide 0:9ed9bcd7cc87 14 // Audio Components
HighTide 0:9ed9bcd7cc87 15 AnalogOut dac(p18);
HighTide 0:9ed9bcd7cc87 16 PwmOut speaker(p25);
HighTide 0:9ed9bcd7cc87 17 wave_player wav(&dac, &speaker);
HighTide 0:9ed9bcd7cc87 18
HighTide 0:9ed9bcd7cc87 19 Thread led_thread, audio_thread;
HighTide 0:9ed9bcd7cc87 20
HighTide 0:9ed9bcd7cc87 21 void led_siren() {
HighTide 0:9ed9bcd7cc87 22 const int build_time = 100;
HighTide 0:9ed9bcd7cc87 23 while (1) {
HighTide 0:9ed9bcd7cc87 24 //LED warm up effect using PWM
HighTide 0:9ed9bcd7cc87 25 for(int i=0; i<build_time; i++) {
HighTide 0:9ed9bcd7cc87 26 led = i / (float) build_time;
HighTide 0:9ed9bcd7cc87 27 ThisThread::sleep_for(1000.0*0.02);
HighTide 0:9ed9bcd7cc87 28 }
HighTide 0:9ed9bcd7cc87 29 //LED at full brightness level
HighTide 0:9ed9bcd7cc87 30 led = 1.0;
HighTide 0:9ed9bcd7cc87 31 ThisThread::sleep_for(1000.0*0.25);
HighTide 0:9ed9bcd7cc87 32 //LED cool down effect using PWM
HighTide 0:9ed9bcd7cc87 33 for(int i=build_time-1; i>0; i--) {
HighTide 0:9ed9bcd7cc87 34 led = i/ (float) build_time;
HighTide 0:9ed9bcd7cc87 35 ThisThread::sleep_for(1000.0*0.02);
HighTide 0:9ed9bcd7cc87 36 }
HighTide 0:9ed9bcd7cc87 37 //LED off
HighTide 0:9ed9bcd7cc87 38 led = 0.0;
HighTide 0:9ed9bcd7cc87 39 ThisThread::sleep_for(1000.0*1.5);
HighTide 0:9ed9bcd7cc87 40 }
HighTide 0:9ed9bcd7cc87 41 }
HighTide 0:9ed9bcd7cc87 42
HighTide 0:9ed9bcd7cc87 43 void play_audio() {
HighTide 0:9ed9bcd7cc87 44 FILE * wav_file;
HighTide 0:9ed9bcd7cc87 45 speaker.period(1.0/1000000.0);
HighTide 0:9ed9bcd7cc87 46 while (1) {
HighTide 0:9ed9bcd7cc87 47 sd.init();
HighTide 0:9ed9bcd7cc87 48 fs.mount(&sd);
HighTide 0:9ed9bcd7cc87 49 wav_file = fopen("/sd/siren.wav", "r");
HighTide 0:9ed9bcd7cc87 50 wav.play(wav_file);
HighTide 0:9ed9bcd7cc87 51 fclose(wav_file);
HighTide 0:9ed9bcd7cc87 52 sd.deinit();
HighTide 0:9ed9bcd7cc87 53 fs.unmount();
HighTide 0:9ed9bcd7cc87 54 }
HighTide 0:9ed9bcd7cc87 55 }
HighTide 0:9ed9bcd7cc87 56
HighTide 0:9ed9bcd7cc87 57 // main() runs in its own thread in the OS
HighTide 0:9ed9bcd7cc87 58 int main()
HighTide 0:9ed9bcd7cc87 59 {
HighTide 0:9ed9bcd7cc87 60 led_thread.start(led_siren);
HighTide 0:9ed9bcd7cc87 61 audio_thread.start(play_audio);
HighTide 0:9ed9bcd7cc87 62 while (true) {
HighTide 0:9ed9bcd7cc87 63 ThisThread::sleep_for(500);
HighTide 0:9ed9bcd7cc87 64 }
HighTide 0:9ed9bcd7cc87 65 }