PWMによる音だし(疑似Sin波)

Dependencies:   mbed

Committer:
yueee_yt
Date:
Thu Dec 29 06:06:16 2011 +0000
Revision:
1:e1919d5190b3
Parent:
0:5a95bead7a47

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yueee_yt 0:5a95bead7a47 1 #define mC 261.626
yueee_yt 0:5a95bead7a47 2 #define mD 293.665
yueee_yt 0:5a95bead7a47 3 #define mE 329.628
yueee_yt 0:5a95bead7a47 4 #define mF 349.228
yueee_yt 0:5a95bead7a47 5 #define mG 391.995
yueee_yt 0:5a95bead7a47 6 #define mA 440.000
yueee_yt 0:5a95bead7a47 7 #define mB 493.883
yueee_yt 0:5a95bead7a47 8
yueee_yt 0:5a95bead7a47 9 #include "mbed.h"
yueee_yt 0:5a95bead7a47 10
yueee_yt 0:5a95bead7a47 11 Ticker timer;
yueee_yt 0:5a95bead7a47 12 PwmOut sp1(p25);
yueee_yt 0:5a95bead7a47 13 float ms[180];
yueee_yt 0:5a95bead7a47 14 float m1;
yueee_yt 0:5a95bead7a47 15
yueee_yt 0:5a95bead7a47 16 void sound_out(void) {
yueee_yt 1:e1919d5190b3 17 static float j=0;
yueee_yt 0:5a95bead7a47 18 j=j+m1;
yueee_yt 1:e1919d5190b3 19 if (j>180)j=j-180;
yueee_yt 0:5a95bead7a47 20 sp1.write(ms[(int)j]);
yueee_yt 0:5a95bead7a47 21 }
yueee_yt 0:5a95bead7a47 22
yueee_yt 0:5a95bead7a47 23 int main() {
yueee_yt 0:5a95bead7a47 24 float mm[]={mC,mD,mE,mF,mG,mA,mB,mC*2};
yueee_yt 0:5a95bead7a47 25 int i;
yueee_yt 1:e1919d5190b3 26 for (i=0; i<180; i++) {
yueee_yt 0:5a95bead7a47 27 ms[i]=sin(2*3.1415*(float)i/180.0)/2.0+0.5;
yueee_yt 0:5a95bead7a47 28 }
yueee_yt 0:5a95bead7a47 29
yueee_yt 1:e1919d5190b3 30 sp1.period_us(10);
yueee_yt 1:e1919d5190b3 31 timer.attach_us(&sound_out,100);
yueee_yt 0:5a95bead7a47 32
yueee_yt 1:e1919d5190b3 33 for (i=0; i<sizeof(mm); i++) {
yueee_yt 0:5a95bead7a47 34 m1=mm[i]*180/10000;
yueee_yt 0:5a95bead7a47 35 wait(0.5f);
yueee_yt 0:5a95bead7a47 36 }
yueee_yt 0:5a95bead7a47 37 sp1.write(0.0f);
yueee_yt 0:5a95bead7a47 38 while (1);
yueee_yt 0:5a95bead7a47 39 }