#include <M5Unified.h>
#include <esp32-hal-ledc.h>

#define LED_PIN 19 // 赤色LED G19

#define PWM_CH 1     // PWMチャンネル（0~15）
#define PWM_FREQ 90  // PWM周波数 (Hz)
#define PWM_RES 8    // 分解能 (bit) → 0~255 のデューティ比

void setup() {
  M5.begin();
  M5.Display.setRotation(3);

  pinMode(LED_PIN, OUTPUT); // PINのモード設定
  // PWM のセットアップ
  ledcAttachChannel(LED_PIN, PWM_FREQ, PWM_RES, PWM_CH);
  // PWM_FREQ=周波数Frequency(Hz) 【 90Hz より、小さくするとどうなる？】
  // PWM_RES=分解能Resolution(bit)

  M5.Display.setRotation(3); //横向き
  M5.Display.setFont(&fonts::lgfxJapanGothic_16);
  M5.Display.println("pwm01 LED点滅サンプル (PWM=Pulse Width Modulation パルス幅変調)");
  M5.Display.setTextScroll(true);
}

void loop() {
  for (int duty = 0; duty <= 255; duty += 5) {
    ledcWrite(LED_PIN, duty);
    delay(20);
  }
  delay(500);
  for (int duty = 255; duty >= 0; duty -= 5) {
    ledcWrite(LED_PIN, duty);
    delay(20);
  }
  delay(500);
  // 別の方法
  //  ledcFade(LED_PIN, 255, 10, 1000);
  //  ledcWrite(LED_PIN, 10); // これがないと切り替わらない
  //  ledcFade(LED_PIN, 10, 255, 1000);
  //  ledcWrite(LED_PIN, 255); // これがないと切り替わらない
  //  delay(500); // 一瞬消灯状態を維持
}