用途
PWM(Pulse Width Modulation:パルス幅変調)信号を生成するためのライブラリ。
LED の明るさ調整、モーター制御、バックライト制御、音声の再生などに使用できる。
前提知識
ラズパイピコはPWM制御に使える脳みそを8個持ってる
→ 「8個のスライスを持っている」とか言う。
1つのスライスにはAとBの2チャンネルある
スライス内のAチャンネルとBチャンネルとで共有してることと、別々に指定できることは以下の通り
| 共有 | 独立 |
|---|---|
| wrap(周期) | level(デューティ比) |
| 位相補正の設定 | AとBのON/OFFパターン |
| クロック分周 | Aチャンネルの出力ピン / Bチャンネルの出力ピン |
例えば、
GPIOピン1にスライス①のAチャンネルを
GPIOピン2にスライス①のBチャンネルを
設定して、どっちのピンにもLEDがつながってるとしたら、
別々の明るさにできるよ。
主要なメソッド
pwm_gpio_to_slice_num(pin)
指定した GPIO ピンがどの PWM スライス(0〜7)に属するかを取得
pwm_gpio_to_channel(pin)
指定した GPIO ピンが A / B のどちらのチャンネルかを取得
pwm_set_wrap(slice, wrap)
PWM カウンタの上限値(周期)を設定
※wrapにはクロック数を渡す。1周期のクロック数が小さいほど周波数が高く、大きいほど周波数が低くなる
pwm_set_chan_level(slice, channel, level)
デューティ比(ON割合)を設定
※level は 0〜wrap の値
pwm_set_enabled(slice, enabled)
PWM の有効化/無効化
pwm_set_clkdiv(slice, divider)
PWM のクロック分周比を設定
※大きい値にすると周波数が下がる
pwm_set_phase_correct(slice, enabled)
位相補正モードの ON/OFF(アップダウンカウント方式)
※デューティ比の精度は上がるが周波数は半分になる
