ESP-WROOM-32(ESP32)のPWM

Arduino IDEを使ってESP-WROOM-32(ESP32)のPWMを制御するプログラムを書く方法を記載します。

PWMとは

PWM(Pulse Width Modulation)は、次の図のような周期的なパルス信号を生成し、1になっている時間と0になっている時間の比率(デューティー比)を変えることで送信する電力を変化させます。

PWMの仕組み

LEDの点灯にPWMを使うと、1になっている時間が短いと人間の目にはLEDが暗くなったように見え、時間が長いと明るく見えます。

PWMを使う場合、2つの値を指定します。

  • パルスの周期
  • デューティー比

ESP-WROOM-32をArduino IDEでプログラムする場合、LEDCライブラリを使ってPWMを制御します。LEDCでは上記2つの値を指定するために3つの値を使います。

  • パルスの周期(Hzで指定)
  •  1周期に含まれる目盛の数(ビット数で指定。10bitなら1024目盛。最大は16bit。)
  • 1になっている時間の長さ(上記の目盛で指定。10bit目盛の場合は0〜1023の値。)

また、LEDCではどのチャンネルを使うかを指定します。チャンネルは0〜15の16個あります。

LEDCライブラリのパラメータ

LEDの明るさを制御するプログラム例

LEDをだんだん明るくし、輝度が最大になったら、今度はだんだん暗くする動作を繰り返すプログラムです。setup( )関数内のledcSetup( )関数でパラメータを設定し、ledcAttachPin( )関数で使用するピンを指定しています。loop( )関数内では、ledcWrite( )関数でLEDの明るさを変更しています。

関連記事

[Nefry BTとGrove接続実験] LEDソケット+LED(赤、青、緑)

カテゴリーIoT

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください