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 |