5.4.2 プロジェクト 1.2 呼吸する LED

1. 説明

「呼吸するLED」とは、LEDの明るさが暗→明→暗と滑らかに変化し続け、人が呼吸しているかのように見える現象です。しかし、LEDの明るさはどのように制御すればよいでしょうか?

PWMを利用するのが合理的です。単位時間内で高レベルと低レベルを出力し、高レベルが占める時間が長いほどPWMの値が大きくなり、LEDはより明るくなります。

画像36

ESP32用にPWM出力のライブラリファイル < analogwrite.h > を用意しているため、単に analogWrite(); と記述するだけでPWM出力を制御できます。

2. テストコード

#include <Arduino.h>
#define led_y 12    // Define LED pin

void setup()
{
  pinMode(led_y, OUTPUT);  // Set pin as output mode
}

void loop()
{
  for(int i = 0; i < 255; i++)  // For loop: increment variable i until it reaches 255
  {
    analogWrite(led_y, i);  // PWM output to control LED brightness
    delay(3);
  }

  for(int i = 255; i > 0; i--)  // For loop: decrement variable i until it reaches 0
  {
    analogWrite(led_y, i);
    delay(3);
  }
}

3. テスト結果

LEDは徐々に暗くなり、その後明るくなることを周期的に繰り返し、人が呼吸しているように見えます。