1. PWM とは

2. 出力波形


演習 4-1 (個人PC): PWM を使ってみましょう。プログラムの仕様は以下の通りです。

仕様:

  1. RB7 から PWM を出力する(番号は1番)
  2. タクトスイッチを離している時は PWM周期 16 ミリ秒、パルス幅 8 ミリ秒 の波形を出力する
  3. タクトスイッチを押している時は PWM周期 8 ミリ秒、パルス幅 6 ミリ秒 の波形を出力する

プロジェクト「IO_3_1」を「IO_4_1」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_3_1 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
main.c を開いて例4を有効にします。
仕様に従って setup 関数と run 関数の内容を書き換えます。
回路を作成します。

以下の設定に従って回路を作成して下さい。
(*) が前の演習からの変更箇所です。

ピン配置設定・回路接続方法:

01: VDD(3.3V)
02: RA5
03: RA4
04: MCLR/VPP -- PICKit の 1: NMCLR ※ プルアップ抵抗不要
05: RC5
06: RC4
07: RC3
08: RC6
09: RC7
10: (*)RB7/PWM1 -- オシロスコープ

11: RB6
12: RB5/Tx -- RN-42 の J2-7 : Rx
13: RB4/Rx -- RN-42 の J2-6 : Tx
14: RC2
15: RC1/ANC1 -- 可変抵抗の中央ピン
16: RC0 (GPIO出力) -- LED
17: RA2 (GPIO入力) -- タクトスイッチ ※ プルアップ抵抗不要
18: ICSPCLK(PGC) -- PICKit の 5: PGC
19: ICSPDAT(PGD  -- PICKit の 4: PGD
20: VSS(GND)

書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「setup関数」と「run関数」を記入してください。


演習 4-2 (個人PC): PWM を使って音を鳴らしてみましょう。プログラムの仕様は以下の通りです。

仕様:

  1. RA4 から PWM を出力する(番号は2番)
  2. タクトスイッチを離している時は音を出さない
  3. タクトスイッチを押している時はオクターブ3のド(131 Hz) の音を出す

音階と PWM 周期、パルス幅の関係:

・オクターブ3のド(131 Hz)

131 Hzは周期で言うと 1/131 = 0.0076 秒 = 7.6 ミリ秒なので、PWM 周期を 7.6 ミリ秒にします。
パルス幅は(適当に決めて良いですが)今回は PWM 周期の半分の 3.8 ミリ秒にします。

プロジェクト「IO_4_1」を「IO_4_2」にコピーします(プロジェクト名を右クリックして Copy を選択)。
プロジェクト IO_4_1 を閉じます(プロジェクト名を右クリックして Close を選択)。
(もし開きっぱなしになっていたら) 前のプロジェクトで開いていたソースを全て閉じます。
main.c を開き、仕様に従って setup 関数と run 関数の内容を書き換えます。
回路を作成します。

以下の設定に従って回路を作成して下さい。
(*) が前の演習からの変更箇所です。

ピン配置設定・回路接続方法:

01: VDD(3.3V)
02: RA5
03: (*)RA4/PWM2 -- 圧電スピーカ ※ 配線済
04: MCLR/VPP -- PICKit の 1: NMCLR ※ プルアップ抵抗不要
05: RC5
06: RC4
07: RC3
08: RC6
09: RC7
10: RB7/PWM1 -- オシロスコープ

11: RB6
12: RB5/Tx -- RN-42 の J2-7 : Rx
13: RB4/Rx -- RN-42 の J2-6 : Tx
14: RC2
15: RC1/ANC1 -- 可変抵抗の中央ピン
16: RC0 (GPIO出力) -- LED
17: RA2 (GPIO入力) -- タクトスイッチ ※ プルアップ抵抗不要
18: ICSPCLK(PGC) -- PICKit の 5: PGC
19: ICSPDAT(PGD  -- PICKit の 4: PGD
20: VSS(GND)

書き込みボタンを押して正常に動作する事を確認して下さい。
指定場所に「setup関数」と「run関数」を記入してください。