Wio LTEのPWM出力を試しました。
使い方
PWM出力するピンをpinMode()で初期化して、
pinMode(WIOLTE_D38, PWM);
analogWrite()でPWM出力のデューティ比を指定します。
analogWrite(WIOLTE_D38, 200);
ArduinoリファレンスのanalogWrite()に0~255の範囲でデューティ比が0~100%とありますが、Wio LTEの場合は0~65535が0~100%になります。
スケッチ例
#include <WioLTEforArduino.h>
WioLTE Wio;
void setup() {
delay(200);
SerialUSB.println("");
SerialUSB.println("--- START ---------------------------------------------------");
SerialUSB.println("### I/O Initialize.");
Wio.Init();
pinMode(WIOLTE_D38, PWM);
SerialUSB.println("### Setup completed.");
}
void loop() {
for (int i = 0; i < 65536; i += 1024) {
analogWrite(WIOLTE_D38, i);
delay(1);
}
}
実行結果
PWMの周期は0.793ミリ秒でした。周波数だと1260Hz。周期を変更する関数を探しましたが見つかりませんでした。周期を変更したいときは、STM32F4のレジスタを操作するしかなさそうです。
PWM出力できるピン
今回、D38で確認しましたが、、、プログラムを確認した感じではD38,D39,D20,D19でPWM出力できるようです。実際に動かしてはいません。