Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 2:509911a88b64, committed 2019-10-02
- Comitter:
- 4180_1
- Date:
- Wed Oct 02 13:45:40 2019 +0000
- Parent:
- 1:8f625551de9f
- Commit message:
- ver 1.0
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Tue Oct 01 00:45:18 2019 +0000
+++ b/main.cpp Wed Oct 02 13:45:40 2019 +0000
@@ -1,11 +1,16 @@
#include "mbed.h"
-#include "rtos.h"
+// Waveplayer Helloworld for mbed LP1768 running mbed OS 5
+// NOTE: Need "target.components_add": ["SD"] in json project file!
+// This adds the filesystem driver below for SD cards in an OS 5 project
+// See https://os.mbed.com/users/4180_1/notebook/using-a-speaker-for-audio-output/
+// for additional details
#include "SDBlockDevice.h"
#include "FATFileSystem.h"
#include "wave_player.h"
// LED Components
PwmOut led(LED1);
+DigitalOut led4(LED4);
// SD File System Components
SDBlockDevice sd(p5, p6, p7, p8);
@@ -14,11 +19,14 @@
// Audio Components
AnalogOut dac(p18);
PwmOut speaker(p25);
+//outputs audio to both DAC and PWM pin
+//select one to drive speaker
wave_player wav(&dac, &speaker);
Thread led_thread, audio_thread;
-void led_siren() {
+void led_siren()
+{
const int build_time = 100;
while (1) {
//LED warm up effect using PWM
@@ -40,26 +48,31 @@
}
}
-void play_audio() {
+void play_audio()
+{
FILE * wav_file;
- speaker.period(1.0/1000000.0);
+ speaker.period(1.0/400000.0); //increase PWM clock rate for audio
+ sd.init();
+ sd.frequency(25000000); //increase SPI clock rate for audio
while (1) {
- sd.init();
fs.mount(&sd);
- wav_file = fopen("/sd/siren.wav", "r");
+ //need sample.wav file on SD card
+ //wave file format mono 16Khz or less (not mp3!)
+ wav_file = fopen("/sd/sample.wav", "r");
wav.play(wav_file);
fclose(wav_file);
- sd.deinit();
fs.unmount();
+ wait(1);
}
}
// main() runs in its own thread in the OS
int main()
-{
+{
led_thread.start(led_siren);
audio_thread.start(play_audio);
while (true) {
ThisThread::sleep_for(500);
+ led4 = !led4;
}
}