Arduinoで遊ぶページ
Arduinoで遊んだ結果を残すページです
LED_PWM
ESP32

概要

Arduino core for the ESP32を使った、ESP-WROOM-32開発ボードのLED_PWMの実験です。LEDの明るさを制御します。

Arduino core for the ESP32には、現時点(2018/1/6)では、analogWrite()tone()が実装されていないようです。ただし、PWMを行うための、ledcXXX()という関数群が用意されています。これらの関数群の使い方を調べて、LEDの明るさを制御する実験を行いました。

あくまで、実験ベースなので、間違いが含まれている可能性が高いので注意してください

Arduino core for the ESP32のインストールのページはこちら

実験

ESP32には、LED_PWMという、主にLEDの明るさを制御するためのPWMが実装されています。もちろん、LEDの明るさ以外の用途にも利用可能です。

利用できるピン

ESP32は、16個のLED PMW出力チャネルを持っています。出力チャネルを、GPIOピンに割り当てることで、LED PWMを出力することができます。ただし、GPIO34から39のピンは、入力専用のピンなので、LED PWMを出力はできません。

お詫び: 以前は、アナログ入力と混同した書き方をしていて、変なことを書いていました。

LED_PWMの使い方

以下のAPIを呼び出すことにより、利用することができます。

ledcAttachPin()とledcSetup()を呼び出す順序はおそらく関係ありません。

他にも、以下のAPIが用意されています。

スケッチ例

12番ピンにLEDを接続して、暗→明→暗→明→…を繰り返します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const int ledPin = 12;
 
void setup() {
  // put your setup code here, to run once:
  ledcSetup(0, 12800, 8);
  ledcAttachPin(ledPin, 0);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  static uint8_t brightness = 0;
  static int diff = 1;
 
  ledcWrite(0, brightness);
 
  if (brightness == 0) {
    diff = 1;
  } else if (brightness == 255) {
    diff = -1;
  }
 
  brightness += diff;
  delay(10);
}

参考文献

バージョン

Hardware:ESP-WROOM-32
Software:Arduino 1.8.4/Arduino core for the ESP32

最終更新日

June 10, 2020

inserted by FC2 system