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.
main.cpp@1:b018dbb87a88, 2016-03-10 (annotated)
- Committer:
- beaglescout007
- Date:
- Thu Mar 10 16:19:20 2016 +0000
- Revision:
- 1:b018dbb87a88
- Parent:
- 0:4df3adbe8435
Sine wave
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
beaglescout007 | 0:4df3adbe8435 | 1 | #include "mbed.h" |
beaglescout007 | 0:4df3adbe8435 | 2 | |
beaglescout007 | 0:4df3adbe8435 | 3 | // DAC 20khz |
beaglescout007 | 0:4df3adbe8435 | 4 | #define DAC_Frequency 20000 |
beaglescout007 | 0:4df3adbe8435 | 5 | |
beaglescout007 | 0:4df3adbe8435 | 6 | AnalogOut dac(PA_4); |
beaglescout007 | 0:4df3adbe8435 | 7 | |
beaglescout007 | 0:4df3adbe8435 | 8 | DigitalIn btn(USER_BUTTON); |
beaglescout007 | 0:4df3adbe8435 | 9 | |
beaglescout007 | 0:4df3adbe8435 | 10 | Timer tim; |
beaglescout007 | 0:4df3adbe8435 | 11 | Ticker tic; |
beaglescout007 | 0:4df3adbe8435 | 12 | |
beaglescout007 | 0:4df3adbe8435 | 13 | // C D E F G A B C |
beaglescout007 | 0:4df3adbe8435 | 14 | int freq_table[] = {262, 293, 330, 349, 392, 440, 493, 523}; |
beaglescout007 | 0:4df3adbe8435 | 15 | int sel; |
beaglescout007 | 0:4df3adbe8435 | 16 | |
beaglescout007 | 0:4df3adbe8435 | 17 | void DAC_Int(void) |
beaglescout007 | 0:4df3adbe8435 | 18 | { |
beaglescout007 | 0:4df3adbe8435 | 19 | int period = 1000000 / freq_table[sel]; |
beaglescout007 | 0:4df3adbe8435 | 20 | int pos = tim.read_us() % period; |
beaglescout007 | 0:4df3adbe8435 | 21 | |
beaglescout007 | 0:4df3adbe8435 | 22 | // Square wave |
beaglescout007 | 1:b018dbb87a88 | 23 | //dac = pos > (period / 2) ? 1 : 0; |
beaglescout007 | 1:b018dbb87a88 | 24 | |
beaglescout007 | 1:b018dbb87a88 | 25 | // Sine wave |
beaglescout007 | 1:b018dbb87a88 | 26 | dac = sin(pos * 3.14f * 2 / period) / 2.0f + 0.5f; |
beaglescout007 | 0:4df3adbe8435 | 27 | } |
beaglescout007 | 0:4df3adbe8435 | 28 | |
beaglescout007 | 0:4df3adbe8435 | 29 | int main() |
beaglescout007 | 0:4df3adbe8435 | 30 | { |
beaglescout007 | 0:4df3adbe8435 | 31 | sel = 0; |
beaglescout007 | 0:4df3adbe8435 | 32 | |
beaglescout007 | 0:4df3adbe8435 | 33 | tim.start(); |
beaglescout007 | 0:4df3adbe8435 | 34 | |
beaglescout007 | 0:4df3adbe8435 | 35 | tic.attach_us(&DAC_Int, 1000000 / DAC_Frequency); |
beaglescout007 | 0:4df3adbe8435 | 36 | |
beaglescout007 | 0:4df3adbe8435 | 37 | while(1) |
beaglescout007 | 0:4df3adbe8435 | 38 | { |
beaglescout007 | 0:4df3adbe8435 | 39 | if (btn == 0) |
beaglescout007 | 0:4df3adbe8435 | 40 | { |
beaglescout007 | 0:4df3adbe8435 | 41 | sel++; |
beaglescout007 | 0:4df3adbe8435 | 42 | if (sel > 7) sel = 0; |
beaglescout007 | 0:4df3adbe8435 | 43 | wait(0.5); |
beaglescout007 | 0:4df3adbe8435 | 44 | } |
beaglescout007 | 0:4df3adbe8435 | 45 | } |
beaglescout007 | 0:4df3adbe8435 | 46 | } |