zzzz
Diff: Audio.cpp
- Revision:
- 1:931e45afbcb4
- Parent:
- 0:6d2a1fb93e9e
--- a/Audio.cpp Fri Jul 05 10:33:07 2019 +0000 +++ b/Audio.cpp Wed Aug 26 19:45:22 2020 +0000 @@ -1,38 +1,111 @@ #include "Audio.h" -double nada[9] = {247, 262, 294, 330, 350, 392, 440, 494, 523}; +extern Serial dbg; -Audio::Audio(PinName buzzer): out(buzzer) +double nada[10] = {0, 247, 262, 294, 330, 349, 392, 440, 494, 523}; +//double nadas[16] = { 6, 6, 0, 6, +// 0, 4, 6, 0, +// 8, 0, 0, 0, +// 1, 0, 0, 0 }; +// +unsigned int nadas[8] = { 1, 2, 3, 4, + 5, 6, 7, 8 + }; + +Audio::Audio(PinName buzzer): _out(buzzer) { } - + void Audio::SetVolume(double volume) { vol = volume; -} +} void Audio::SetDuration(unsigned int milisec) { ms = milisec; } - + void Audio::PlayNote(unsigned int angka) { - if(angka > 8) angka = 8; - + if(angka > 8) angka -= 8; + double Nada = nada[angka]; PlayNote(Nada*4.24, ms, vol); } void Audio::mute() { - out = 0; + DigitalOut *out = new DigitalOut(_out); + out->write(0); + delete out; } void Audio::PlayNote(double frequency, double duration, double volume) { - out.period(1.0/frequency); - out = volume/2.0; + PwmOut *out = new PwmOut(_out); + out->period(1.0/frequency); + out->write(volume/2.0); wait_ms(duration); - out = 0.0; + out->write(0.0); + delete out; } + +// ----------------------------------------------------------------------------- +MyAudio::MyAudio(PinName buzz) : Audio (buzz) +{} + +void MyAudio::play(const int &code) +{ + switch(code) { + case 0 : + mute(); + break; + + case 1 : { + set(500, 0.7); + playing(3); + set(500, 0.7); + playing(6); + } + break; + + case 2 : { + set(1000, 2); + playing(5); + playing(2); + } + break; + + case 3 : { + set(500, 0.7); + playing(6); + } + break; + + default: + set(100, 0.5); + for(int j=0; j<8; j++) { + playing(nadas[j]); + } + set(); + mute(); + break; + } +} + +void MyAudio::set(double dur, double vol) +{ + Audio::SetVolume(vol); + Audio::SetDuration(dur); +} + +void MyAudio::playing(unsigned int note) +{ + Audio::PlayNote(note); +} + +void MyAudio::mute() +{ + Audio::mute(); +}