PR

ESP32のLEDC(PWM)関数でコンパイルエラー発生/対応方法

記事内に広告が含まれています。

 ArduinoIDE環境で昨日まで普通に使えていたのESP32のLEDC関数(PWM)。急にコンパイルエラーが発生して使えなくなりました。その原因と対策方法です。

スポンサーリンク

概要

Compilation error: 'ledcSetup' was not declared in this scope

 昨日まで普通に検討していたソースで突然こういったエラーが発生してコンパイルができなくなってしまいました。結論から言うとボードのバージョンアップ(3.0.0以降)が原因で、一部のLEDC関数に削除/変更が入ってます。

スポンサーリンク

よく使いそうな関数を抜粋して解説

 設定関係の関数に変更が入ってるようです。

ledcSetup()
ledcAttachPin()

 上記2つの関数が削除されました。というか以下の関数に使い方が統合された感じです。

bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);

 チャンネルは自動で設定されるように変更が入ったようです。引数はほぼ以前のものと同様、出力ピン/周波数/解像度。

bool ledcAttachChannel(uint8_t pin, uint32_t freq, uint8_t resolution, int8_t channel);

 チャンネルを指定する場合はこの関数を使用。

bool ledcWrite(uint8_t pin, uint32_t duty);

 PWM出力する関数も若干変更が入りました。今まではチャンネル指定でしたが、出力するピン番号に変更されてます。

 とりあえず今回のエラーに影響していた関数だけ抜粋してまとめておきました。従来のソースを流用している場合まず間違いなくコンパイルエラーが発生します。まさかボード更新でこういった変化点が入るとは思っていなかったので原因がわかるまで結構悩みました。他にもちょこちょこ変更が入っているようですので詳細確認したい場合はこちらから(2024/6現在)。

コメント

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