본문 바로가기

메이커 자료/ESP32 : Easy Connector

#7. ESP32 아날로그 출력 LED밝기 제어(DAC, PWM) 메이크잇나우 Makeitnow

 

 

 

 

 

2022.01.05 - [메이커 자료/ESP32 : Easy Connector] - #1. ESP32 아두이노 설치 및 세팅하기 - MakeitNow 메이크잇나우

2022.01.06 - [메이커 자료/ESP32 : Easy Connector] - #2. ESP32 LED 제어하기 - on / off - MakeitNow 메이크잇나우

2022.01.13 - [메이커 자료/ESP32 : Easy Connector] - #3. ESP32 버튼으로 LED 제어하기 : 디지털 입력 - Makeitnow 메이크잇나우

2022.01.17 - [메이커 자료/ESP32 : Easy Connector] - #4. ESP32 조도센서 읽어오기 [아날로그 입력] - Makeitnow 메이크잇나우

2022.01.18 - [메이커 자료/ESP32 : Easy Connector] - #5. ESP32 온습도센서 활용, DHT11 - Makeitnow 메이크잇나우

2022.01.22 - [메이커 자료/ESP32 : Easy Connector] - #6. ESP32 근접센서 활용 주차장 차량감지기 - MAKEITNOW 메이크잇나우

 

안녕하세요.

MAKE IT NOW : 메이크잇나우 입니다.

이번에는 ESP32에서 아날로그 출력에 대해서 알아보도록 하겠습니다.

ESP32에서는 아두이노와 조금 다른 부분이 아날로그 출력하는 부분인데요.

아두이노에서는 DAC기능을 제공해주고 있지 않기 때문에, analogWrite()함수를 사용하면 PWM방식으로만 제어가 되었다면 ESP32는 PWM / DAC 두 가지 기능을 모두 사용 할 수 있기 때문에, 원하시는 방법으로 아날로그 출력을 할 수 있습니다.  

그럼 간단히 LED를 활용하여 아날로그 출력을 

그럼 ESP32에서 사용하는 아날로그 출력에 대해서 한번 살펴보도록 하겠습니다.


 

PWM방식과 DAC방식으로 아날로그 출력하기

 

STEP 1. 아날로그 출력이란 무엇인가요? 그리고 PWM이 무엇인가요?

  ▶ 디지털 출력과는 다르게 아날로그 출력은 더 정교한 값의 제어가 가능합니다. 디지털 출력에서는 LED의 밝기 변화를 하는 것은 불가능했죠? 아날로그 출력을 사용하시면 출력하는 전압의 량을 다르게 해서 LED의 밝기를 변화 시킬 수 있습니다.

  ▶ PWM방식은 펄스폭을 조절하면서 제어하는 방식인데요. 일반적으로 서보모터와 같이 정교한 움직이 필요한 장비를 제어하기 위해서 많이 사용되어지고 있습니다. 

 

  ▶ 위의 사진과 같이 1펄스의 폭에서 duty값을 변화시켜가면서 값을 출력하는 것입니다.
  ▶ 아두이노에서는 analogWrite()함수를 사용했지만, ESP32에서는 조금 다르게 제어를 할 수 있습니다..

STEP 2. PWM방식 제어

  ▶ ESP32에서 PWM방식 제어를 위해서는 첫번째로 
   1. 채널값 : 0-15 까지 총 16개의 채널을 사용할 수 있구요.
   2. 주파수(frequency) : 주파수는 일반적으로 5000Hz정도를 사용합니다.
   3. 분해능 (resolution) : 분해능은 1-16bits지만 저희는 아두이노 비슷하게 8bit 정도로 사용해보도록 하겠습니다.

  ▶ 필요한 함수는 아래와 같습니다.

ledcAttachPin(핀번호, 채널);

ledcSetup(채널, 주파수, 분해능);

ledcWrite(채널, 값)

 

STEP 3. 선 연결 및 코드 작성하기

  ▶  LED 밝기를 점차 밝게 하는 간단한 코드는 아래와 같다고 보시면 됩니다.

// 1. channel 16 -> 0-15
// 2. 5000hz
// 3. 1 ~16bit 8bit -> 0-255

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

void loop() {
  for(int i=0; i<=256; i++){
    ledcWrite(0,i);
    delay(10);
  }
}

 

  ▶  LED 밝기를 점차 밝게 하는 간단한 코드는 아래와 같다고 보시면 됩니다.

 

DAC방식으로 아날로그 출력하기

 

STEP 1. DAC방식??

  ▶  DAC : Digital to Analog Converter의 약자로, 디지털 신호를 아날로그로 변환하여 보내주는 방식입니다.
 PWM방식으로 아날로그처럼 변환하는 것이 아니라 간편히 아날로그 신호를 보낼 수 있다라고 보시면 되는데요.
  ▶  아두이노에서는 DAC 기능을 지원하지 않지만 ESP32에서는 DAC기능이 가능한 핀이 2개가 있습니다.

DAC1 = GPIO25
DAC2 = GPIO26

  ▶  위의 두 핀을 사용하면 아주 간편하게 아날로그 출력이 가능합니다.

STEP 2. 코드 작성

void setup() {
  
}

void loop() {
  for(int i=0; i<=255; i++){
    dacWrite(25,i);
    delay(15);
  }
}

 

아주 간편하죠?

 

이제 모든 준비는 완료 되었습니다!
아래 빨간색 위치에 업로드 버튼 누르면!! 끝!

단, 포트연결까지 완료해야 된다는 점!

 



 

MAKE IT NOW Easy Connector 보드를 활용하여 간편하게 IoT 시스템을 학습하고 만들어보세요!

 

 

[메이크잇나우] 쉽게 연결하는 Easy Connect IoT 베이직 키트 (iot 키트 교육 교구 패키지 이지커넥트

[Make it Now] 메이커 제품을 만날 수 있는 마켓입니다.

smartstore.naver.com

 

카카오톡 문의하기 !

 

MAKE IT NOW

카카오톡 채팅을 해보세요.

pf.kakao.com

사업자 정보 표시
메이크잇나우 | 김건욱 | (우 : 13487) 경기도 성남시 분당구 대왕판교로645번길 12 (경기창조경제혁신센터) 9층 | 사업자 등록번호 : 646-35-00394 | TEL : 070-8887-0703 | Mail : kgu0724@makeitnow.kr | 통신판매신고번호 : 2018-성남분당-0517호 | 사이버몰의 이용약관 바로가기