Raspberry Pi PicoのPWM(Pulse Width Modulation)のテストをします。
Picoは、DAC(デジタルアナログコンバータ)を持っていませんので、Arduinoと同じように疑似アナログ出力としてPWMを使うことになります。
PWM信号は、全てのGPIOに出力可能です。
例として、GP15に1000Hz、デューティ比50%の信号を出力するスクリプトです。
4行目 GP15にPWM信号を出力します。
5行目 周波数を1000Hzに指定します。
6行目 デューティ比を設定します。16ビット(0~65535)で指定します。この例では、32768ですから、50%になります。
出力された波形です。設定した通りの波形です。
実際の周波数を測定してみました。
確かに1000Hzです。けっこう正確です。周波数は100Hzから60kHzまで設定できます。
dutyを設定する方法は、duty_u16( ) の他に、dutyの幅をns単位で設定できる duty_ns( ) があります。
deinit() でPWMを無効化できます。
PicoのGPIOは、30個ありますが、下の表のようなグループに分けられ、周波数は、スライス単位で、デューティは、チャンネル単位で設定します。
スライス チャンネルA チャンネルB
0 GPIO0 GPIO16 GPIO1 GPIO17
1 GPIO2 GPIO18 GPIO3 GPIO19
2 GPIO4 GPIO20 GPIO5 GPIO21
3 GPIO6 GPIO22 GPIO7 GPIO23
4 GPIO8 GPIO24 GPIO9 GPIO25
5 GPIO10 GPIO26 GPIO11 GPIO27
6 GPIO12 GPIO28 GPIO13 GPIO29
7 GPIO14 GPIO15
※コメント投稿者のブログIDはブログ作成者のみに通知されます