Sample Programs

SPEAKER練習問題

[SPEARKER練習問題1]

3オクターブ分のドレミファソラシドを演奏する.For文を使うこと.

[解答例]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
#include "NolibM.h"
 
volatile struct EPWM_REGS *ePWM[] =
                  { &EPwm1Regs,         //intentional: (ePWM[0] not used)
                    &EPwm1Regs,
                    &EPwm2Regs,
                    &EPwm3Regs,
                    &EPwm4Regs,
                    &EPwm5Regs,
                    &EPwm6Regs,
                    &EPwm7Regs
                  };
 
void main(void)
{
    int i;
    initNolibM(); //初期化
 
    while(1) // 無限ループ
    {/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
 
            for(i=1;i<4;i++)
            {
            beep(DO/i,D1,250);
            wait(250);
            beep(RE/i,D1,250);
            wait(250);
            beep(MI/i,D1,250);
            wait(250);
            beep(FA/i,D1,250);
            wait(250);
            beep(SO/i,D1,125);
            wait(62);
            beep(RA/i,D1,125);
            wait(250);
            beep(SHI/i,D1,125);
            wait(250);
            beep(DO/2/i,D1,125);
            wait(250);
            }
 
    }/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}

[SPEARKER練習問題2]

SW1のON/OFFによってONの時に音楽の速度が二倍速に変わる

[解答例]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
#include "NolibM.h"
volatile struct EPWM_REGS *ePWM[] =
                  { &EPwm1Regs,         //intentional: (ePWM[0] not used)
                    &EPwm1Regs,
                    &EPwm2Regs,
                    &EPwm3Regs,
                    &EPwm4Regs,
                    &EPwm5Regs,
                    &EPwm6Regs,
                    &EPwm7Regs
                  };
 
void main(void)
{
    int i,sp;
    initNolibM(); //初期化
 
    while(1) // 無限ループ
    {/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
 
        for(i=1;i<4;i++)
        {
            if(sw1(ON))
            {
                sp=2;
            }
            else
            {
                sp=1;
            }
            beep(DO/i,D1,250/sp);
            wait(250/sp);
            beep(RE/i,D1,250/sp);
            wait(250/sp);
            beep(MI/i,D1,250/sp);
            wait(250/sp);
            beep(FA/i,D1,250/sp);
            wait(250/sp);
            beep(SO/i,D1,125/sp);
            wait(62/sp);
            beep(RA/i,D1,125/sp);
            wait(250/sp);
            beep(SHI/i,D1,125/sp);
            wait(250/sp);
            beep(DO/2/i,D1,125/sp);
            wait(250/sp);
        }
    }/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}

[SPEARKER練習問題3]

SW1のON/OFFによって音楽が1オクターブ上がる

[SPEARKER練習問題4]

周波数を連続変化させる、 台形則↓の音を聞いてみる。
beep2(28000,D1)→5s→beep2(15000,D1) →5s→beep2(15000,D1) →5s→beep2(28000,D1)

[解答例]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
#include "NolibM.h"
 
volatile struct EPWM_REGS *ePWM[] =
                  { &EPwm1Regs,         //intentional: (ePWM[0] not used)
                    &EPwm1Regs,
                    &EPwm2Regs,
                    &EPwm3Regs,
                    &EPwm4Regs,
                    &EPwm5Regs,
                    &EPwm6Regs,
                    &EPwm7Regs
                  };
 
void main(void)
{
    int i,tn;
    initNolibM(); //初期化
 
    while(1) // 無限ループ
    {/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
 
        for(tn=28000;tn>15000;tn-=28)
        {
            beep2(tn,D1);
            wait(10);
        }
        wait(5000);
        for(tn=15000;tn<28000;tn+=28)
        {
            beep2(tn,D1);
            wait(10);
        }
 
    }
/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}

[SPEARKER練習問題5]

配列変数を使って音楽を奏でる
宣言 int playcode[]={DO,RE,MI,FA,SO,RA,SHI}
For文を使ってbeep()を回す
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
#include "NolibM.h"
 
volatile struct EPWM_REGS *ePWM[] =
                  { &EPwm1Regs,         //intentional: (ePWM[0] not used)
                    &EPwm1Regs,
                    &EPwm2Regs,
                    &EPwm3Regs,
                    &EPwm4Regs,
                    &EPwm5Regs,
                    &EPwm6Regs,
                    &EPwm7Regs,
                    #if (DSP2804x_DEVICE_H)
                    &EPwm8Regs
                    #endif
                  };
 
void main(void)
{
    int i;
    int playcode[]={DO,RE,MI,FA,SO,RA,SHI,DO/2};
    initNolibM(); //初期化
 
    while(1) // 無限ループ
    {/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
 
        for(i=0;i<8;i++)
        {
            beep(playcode[i],D1,125);
            wait(250);
        }
 
    }
/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}

[SPEARKER練習問題6]

[ハイレベル]二次元配列を使って音と長さの情報を配列に入れて演奏する。
宣言 int playcode[][]={{DO,250},{RE,250},{MI,125}}
ヒントBeep2()を使う
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "DSP28x_Project.h"     // Device Headerfile and Examples Include File
#include "NolibM.h"
 
volatile struct EPWM_REGS *ePWM[] =
                  { &EPwm1Regs,         //intentional: (ePWM[0] not used)
                    &EPwm1Regs,
                    &EPwm2Regs,
                    &EPwm3Regs,
                    &EPwm4Regs,
                    &EPwm5Regs,
                    &EPwm6Regs,
                    &EPwm7Regs
                  };
 
void main(void)
{
    int i;
    int playcode[][2]={{DO,125},{RE,125},{MI,250},{FA,65},{SO,65},{RA,125},{SHI,100},{DO/2,250}};
    initNolibM(); //初期化
 
    while(1) // 無限ループ
    {/*------------------↓↓↓ここから書き換える↓↓↓--------------------*/
 
        for(i=0;i<8;i++)
        {
            beep(playcode[i][0],D1,playcode[i][1]);
            wait(250);
        }
 
    }
/*------------------↑↑↑書き換えるのはここまで↑↑↑-----------------*/
}
Follow Me!
  • Twitter