




public PWM( Cpu.PWMChannel channel, double frequency_Hz, // 周波数 単位はHz double dutyCycle, // デューティサイクル 0.0~1.0の範囲 bool invert // 出力を反転させるかどうか )
| 1kHzと2kHzを0.1秒ずつ | |
|---|---|
public static void Main()
{
PWM speaker = new PWM(Cpu.PWMChannel.PWM_2,1000.0,0.5,false);
while (true)
{
speaker.Start();
speaker.Frequency = 1000;
speaker.DutyCycle = 0.5;
CPU.delay(100);
speaker.Frequency = 2000;
speaker.DutyCycle = 0.5;
CPU.delay(100);
speaker.Stop();
CPU.delay(1000);
}
}
|
1 2 3 PWM_2はPC7である 4 5 6 7 1kHzに設定 8 9 10 2kHzに設定 11 12 13 14 15 16 |
| 音階をスピーカーに出力する | |
|---|---|
public static void Main()
{
// 周波数 ド レ ミ ファ ソ ラ シ ド
double[] scale = { 261.63, 293.66, 329.63, 349.23, 392.0, 440.0, 493.88, 523.25 };
PWM speaker = new PWM(Cpu.PWMChannel.PWM_0, 1000.0, 0.5, false);
speaker.Start();
while (true)
{
foreach (double frequency in scale)
{
speaker.Frequency = frequency;
speaker.DutyCycle = 0.5;
CPU.delay(500);
}
}
}
|
1 2 3 4 周波数データ 5 PWMオブジェクトを作る 6 波形出力開始 7 8 9 配列の始めから最後まで 10 11 周波数の変更 12 13 14 15 16 |
| 花は咲くの冒頭 | |
|---|---|
const int シ = 0, ド = 1, レ = 2,ミ = 3,ファ = 4;
const int ソ = 5, ラ = 6, し = 7, ど = 8, 休 = 9;
public static void Main()
{
// 周波数 シ ド レ ミ ファ ソ ラ シ ド 休符
double[] freq = { 246.94, 261.63, 293.66, 329.63, 349.23, 392.0, 440.0, 493.88, 523.25, 0 };
int[] music = { レ,1, ド,1, シ,1, レ,1, ソ,3,ラ,1, ど,1,し,1,し,2,し,2,休,2,
ソ,1,ラ,1,し,1,ソ,1,ソ,1,レ,1,レ,3,ド,1,シ,4,休,2};
PWM speaker = new PWM(Cpu.PWMChannel.PWM_0, 1000.0, 0.5, false);
while (true)
{
for (int i = 0; i < music.Length; i += 2)
{
if (music[i] != 休)
{
speaker.Frequency = freq[music[i]];
speaker.DutyCycle = 0.5;
speaker.Start();
}
CPU.delay(500 * music[i + 1]);
speaker.Stop();
CPU.delay(10);
}
}
}
|
1 音程データ 2 3 4 5 6 音程の周波数データ 7 曲データ 8 9 PWMオブジェクトを作る 10 11 12 13 14 休符だったら音は出さない 15 そうでなければ出す 16 周波数の設定 17 18 音発生開始 19 20 持続時間 21 22 23 24 25 26 27 |
| 二重奏にする | |
|---|---|
public static void Main()
{
PWM speaker1 = new PWM(Cpu.PWMChannel.PWM_0, 100.0, 0.5, false);
PWM speaker2 = new PWM(Cpu.PWMChannel.PWM_3, 200.0, 0.5, false);
while (true)
{
speaker1.Frequency = 1000;
speaker1.DutyCycle = 0.5;
speaker1.Start(); // 一つ目の音1kHzを出す
CPU.delay(1000); // 1秒待つ
speaker2.Frequency = 1500;
speaker2.DutyCycle = 0.5;
speaker2.Start(); // 2つ目の音を1.5kHz出す
CPU.delay(1000); // 二つ目の音を重ねる
speaker1.Stop(); // 1つ目の音を止める
CPU.delay(1000); // 二つ目の音だけになる
speaker2.Stop(); // 2つ目の音も止める
CPU.delay(1000);
}
}
|
1 2 3 1つ目のオブジェクト 4 2つ目のオブジェクト 5 6 7 8 9 10 11---- 12 | 13 | 14 | 15 |--- 16 | | 17 | | 18 | | 19---- | 20 | 21-------- 22 23 24 |
