hardware_pwmの用途と主要なメソッド

raspberry pi pico

用途

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(アップダウンカウント方式)
※デューティ比の精度は上がるが周波数は半分になる

タイトルとURLをコピーしました