4주차_안내 : `ledcAttachPin` 함수 변경 관련 - dhryu60/SmartDevice_2025-1 GitHub Wiki

ESP32의 PWM(Pulse Width Modulation) 기능을 설정할 때 사용하는 ledcAttachPin 함수는 Arduino-ESP32 코어 버전에 따라 변경되었습니다. 이전에 사용되던 ledcAttachPinledcSetup 함수는 Arduino-ESP32 코어 버전 3.0.0부터 단일 함수인 ledcAttach로 통합되었습니다. https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html#ledc

변경 사항 요약:

  • 이전 버전(2.x.x):
  ledcSetup(uint8_t channel, uint32_t freq, uint8_t resolution);
  ledcAttachPin(uint8_t pin, uint8_t channel);

 위와 같이 두 개의 함수를 사용하여 PWM 채널을 설정하고 핀에 할당했습니다.

  • 새로운 버전(3.x.x 이상):
  bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);

 이제 단일 함수인 ledcAttach를 사용하여 핀에 주파수와 해상도를 직접 설정합니다.

해결 방법:

  1. 코드 업데이트: 사용 중인 Arduino-ESP32 코어 버전에 따라 코드를 수정해야 합니다.

    • 코어 버전 3.x.x 이상: ledcAttach 함수를 사용하여 PWM을 설정합니다.
    • 코어 버전 2.x.x: 기존의 ledcSetupledcAttachPin 함수를 계속 사용할 수 있습니다.
  2. 코어 버전 확인 및 변경: 만약 기존 코드를 수정하지 않고 사용하고자 한다면, Arduino IDE에서 ESP32 보드 매니저를 통해 코어 버전을 2.x.x로 다운그레이드할 수 있습니다.

주의사항:

  • 라이브러리 호환성: 사용 중인 라이브러리가 특정 코어 버전에 의존할 수 있으므로, 코어 버전을 변경할 경우 라이브러리의 호환성을 확인해야 합니다.
  • 문서 확인: Espressif의 공식 문서를 참고하여 최신 API 변경 사항을 확인하는 것이 좋습니다. citeturn0search2

이러한 변경 사항을 반영하여 코드를 수정하거나 코어 버전을 조정하면 ledcAttachPin 관련 오류를 해결할 수 있습니다.