본문 바로가기

메이커 이야기/아두이노

ESP32 PWM 출력 LED 밝기 변화

반응형

아두이노에서 아날로그 출력은 PWM을 활용하여 제어를 하는데요

사용하는 함수는 analogWrite() 함수를 사용합니다.

아두이노는 아날로그 출력이 안되기 때문에, pwm 제어를 사용하는데요

 

오늘 살펴볼 ESP32에서는 analogWrite()라는 함수를 사용할 수 없습니다.

그럼 어떻게 할까요?

 

아래 코드를 보면 아시다 시피

ESP32에서는 CH : 0~15 [16개의 채널을 사용]
핀은 : 2,4,12~19, 21,22,23,25,26,27,32 에서 PWM 제어를 할 수 있습니다.

그리고 ESP는 

ledcAttachPin() 함수를 통해 핀 과 채널을 매칭하고

ledcSetup()를 통해서 채널과, Hz, resolution 을 지정하는데

일반적으로 Hz : 5000 

resolution 은 8로 설정을 해주면 됩니다. (8로 하면 아두이노 처럼 0~255 까지 제어가 가능)

 

int ledPin = 15;
int val = 0;

void setup() {
  ledcAttachPin(ledPin, 0);
  ledcSetup(0, 5000, 8);
}

void loop() {
  int sensorVal = analogRead(13);
  int Brigtness = map(sensorVal, 0, 4095, 0, 255);
  ledcWrite(0,Brigtness);
}

 

이런 방식으로 조도 센서에서 받은 값으로 led 밝기 변화를 줄 수 있습니다.

 

 

반응형