5.4.2 プロジェクト 1.2 呼吸する LED
1. 説明
「呼吸するLED」とは、LEDの明るさが暗→明→暗と滑らかに変化し続け、人が呼吸しているかのように見える現象です。しかし、LEDの明るさはどのように制御すればよいでしょうか?
PWMを利用するのが合理的です。単位時間内で高レベルと低レベルを出力し、高レベルが占める時間が長いほどPWMの値が大きくなり、LEDはより明るくなります。

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