ESP32_Built-in_LED

박찬영·2022년 5월 23일
1

ESP32_Study

목록 보기
2/5

ESP32-WROOM-32를 사용


출처: https://randomnerdtutorials.com/esp32-pwm-arduino-ide/

PWM를 이용하여 내장된 LED의 밝기를 조절


코드

#define LEDC_CHANNEL_0 0
#define LEDC_TIMER_13_BIT 13
#define LEDC_BASE_FREQ 5000
#define LED_PIN 2

int brightness = 0;
int fadeAmount = 5;

void ledcAnalogWrite(uint8_t channel, uint32_t value, uint32_t valueMax = 255){
  uint32_t duty = (8191 / valueMax) * min(value,valueMax);
  ledcWrite(channel, duty);
}

void setup(){
  ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
  ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
}

void loop(){
  ledcAnalogWrite(LEDC_CHANNEL_0, brightness);
  brightness = brightness + fadeAmount;
  if(brightness <= 0 || brightness >= 255){
    fadeAmount = -fadeAmount;
  }
  delay(30);
}

("확! 다른 아두이노 사이다 교과서" 사용)

이 코드는 PWM를 이용하여 내장 LED를 조절한다.
(PWM은 모터제어나 LED의 조명제어등에 사용된다.)


코드 설명

#define LEDC_CHANNEL_0 0
#define LEDC_TIMER_13_BIT 13
#define LEDC_BASE_FREQ 5000
#define LED_PIN 2
  
int brightness = 0;
int fadeAmount = 5;

ESP32에는 3개의 하드웨어 타이머가 있다. 그 중에서 13번을 사용한고 설정한 것이 LEDC_TIMER_13_BIT이다.
LEDC_BASE_FREQ는 LED제어 하는 주파수 값이다. (보통 LED는 5000HZ이다.)
LED_PIN은 ESP32에 내장되어있는 LED번호를 사용하였다.


void ledcAnalogWrite(uint8_t channel, uint32_t value, uint32_t valueMax = 255){
  uint32_t duty = (8191 / valueMax) * min(value,valueMax);
  ledcWrite(channel, duty);
}

8비트 분해능을 사용하므로 duty는 0 ~ 255 사이 값을 사용하여 제어된다.
ledcWrite기능에서는 GPIO가 아닌 신호를 생성하는 채널이다.
->여기서 LED의 밝기를 설정한다.


void setup(){
  ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
  ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
}

ledcSetup()은 ledChannel, 주파수, 해상도를 인수로 받는 함수이다.
ledcAttachPin()은 두 개의 인자를 갖는다.
첫 번째 인자는 신호를 출력할 GPIO지정, 두 번째 인자는 신호를 생성할 채널이다.


void loop(){
  ledcAnalogWrite(LEDC_CHANNEL_0, brightness);
  brightness = brightness + fadeAmount;
  if(brightness <= 0 || brightness >= 255){
    fadeAmount = -fadeAmount;
  }
  delay(30);
}

위에 ledAnalogWrite함수를 사용하여 LED를 제어한다.
만약 brightness가 0보다 작거나 255보다 클 때 fadeAmount값을 -로 바꿔준다.
이렇게 하게 되면 불이 점점 밝아졌다가 다시 어두워졌다를 반복하게 된다.


profile
안녕하세여

0개의 댓글

관련 채용 정보