본문 바로가기

메이커 이야기/ESP32

ESP32 MicroPython DAC편 : 아날로그 출력

반응형

오늘은 ESP32를 활용해서 아날로그 출력에 대해서 한번 살펴보겠습니다. 아두이노와는 다르게 ESP32는 DAC기능을 지원합니다. Digital신호를 아날로그로 출력하는 기능이죠. ESP32는 8bit DAC를 제공하고 있습니다. 사용법을 간단히 보겠습니다.

2023.03.26 - [메이커 이야기/ESP32] - ESP32 MicroPython ADC편 : 아날로그 센서 값

 

DAC는 디지털 신호를 아날로그 신호로 변환하는 기능을 제공합니다. ESP32 보드는 8비트 DAC를 내장하고 있어, 0~3.3V의 출력 범위를 256단계로 분해하여 출력할 수 있습니다. DAC를 활용하여 스피커, LED 등을 제어할 수 있습니다.

DAC를 활용하기 위해서는 machine.DAC() 함수를 사용하여 DAC 핀을 초기화해야 합니다. 그리고 write() 함수를 이용하여 DAC 값을 출력할 수 있습니다.

아래는 DAC를 이용하여 LED를 깜빡이는 코드입니다.

1. 회로연결

회로는 일단 GPIO25번 핀에 연결해주세요. LED하나만 제어해보도록 할 것입니다.

2. 코드 작성

 

import machine
import time

# 핀 번호 지정 (DAC1)
dac_pin_num = 25

# DAC 핀 모드 설정
dac_pin = machine.Pin(dac_pin_num)
dac = machine.DAC(dac_pin)

while True:
    # DAC 값 출력
    for i in range(256):
        dac.write(i)
        time.sleep(0.01)

    for i in range(255, -1, -1):
        dac.write(i)
        time.sleep(0.01)

코드 설명

  1. machine 모듈과 time 모듈을 임포트합니다.
  2. DAC 모듈의 핀 번호를 dac_pin_num 변수에 할당합니다. 여기서는 25번 핀을 사용하도록 지정합니다.
  3. DAC 핀 모드를 설정하기 위해 machine.Pin() 함수를 사용합니다. dac_pin 변수에는 dac_pin_num으로 지정한 핀 번호를 전달하고, 이 핀을 DAC 모드로 설정합니다.
  4. machine.DAC() 함수를 사용하여 dac 변수를 초기화합니다. dac_pin 변수에 할당된 핀을 사용하여 DAC 모듈을 초기화합니다.
  5. while 루프를 시작합니다. 이 루프는 무한히 반복되며, DAC 값이 지속적으로 출력됩니다.
  6. for 루프를 사용하여 DAC 값을 지속적으로 증가시키며 출력합니다. range() 함수를 사용하여 0부터 255까지의 값을 반복합니다.
  7. dac.write() 함수를 사용하여 DAC에 값을 출력합니다. 이 때, i 변수에 저장된 값을 전달합니다.
  8. time.sleep() 함수를 사용하여 일정 시간 동안 대기합니다. 이 경우, 0.01초의 시간을 대기합니다.
  9. 다시 for 루프를 사용하여 DAC 값을 감소시키며 출력합니다. range() 함수를 사용하여 255부터 0까지의 값을 반복합니다.
  10. dac.write() 함수와 time.sleep() 함수를 사용하여 DAC에 값을 출력하고 대기합니다.
  11. 6번부터 10번까지의 과정을 반복합니다.

 

아두이노와는 다르게 ESP32에서는 DAC출력을 할 수 있습니다. 진짜 아날로그 출력을 할 수 있는 것이죠. 
오늘은 DAC출력에 대해서 간단히 살펴보았습니다. 다음번에는 PWM출력에 대해서 한번 살펴보도록 하겠습니다.

2023.03.14 - [메이커 이야기/ESP32] - ESP32 MicroPython 시작하기

 

ESP32 MicroPython 시작하기

ESP32를 MicroPython을 사용하여 제어해보는 과정을 만들어보려고 합니다. 그 동안은 Arduino IDE로 ESP32를 제어했었는데요. Python을 종종 사용하는 저에게 C++개발환경보다는 Python을 사용할 수 있다는게

kgu0724.tistory.com

2023.03.16 - [메이커 이야기/ESP32] - ESP32 MicroPython 개발환경 구성하기 : Thonny

 

ESP32 MicroPython 개발환경 구성하기 : Thonny

이번에는 ESP32로 Micropython을 사용하기 위해서 개발환경을 구성해 보도록 하겠습니다. 개발환경은 여러가지가 있습니다만, 이번에 다뤄볼 개발환경은 라즈베리파이에서도 쉽게 찾아 보았던 Thonny

kgu0724.tistory.com

2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython 기초 문법 : Python편

 

ESP32 MicroPython 기초 문법 : Python편

지난 시간에 이어서 오늘은 Micropython을 사용하기 전에 알아 두면 좋을 만한 기초 문법들에 대해서 정리해보도록 하겠습니다. 파이썬을 사용해보신 분들은 참고 안하셔도 괜찮을 것 같아요! 간단

kgu0724.tistory.com

2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython GPIO제어 : LED 제어편

 

ESP32 MicroPython GPIO제어 : LED 제어편

이제 본격적으로 MicroPython을 사용해서 GPIO제어를 해보도록 할 것입니다. 음 우선 본 포스팅을 보는 분들은 회로 연결은 기본적으로 할 수 있다고 생각하고 ~ 회로는 별도로 그리진 않도록 할 것

kgu0724.tistory.com

2023.03.21 - [메이커 이야기/ESP32] - ESP32 MicroPython GPIO제어(2) : 버튼 제어편

 

ESP32 MicroPython GPIO제어(2) : 버튼 제어편

오늘은 ESP32의 MicroPython을 사용하여 버튼을 제어해보도록 하겠습니다. GPIO에서 디지털 출력을 다뤄보았다면, 이제는 INPUT에 대해서도 다뤄보면 좋겟죠?! 푸시버튼을 활용해서 GPIO제어를 다뤄보도

kgu0724.tistory.com

2023.03.26 - [메이커 이야기/ESP32] - ESP32 MicroPython ADC편 : 아날로그 센서 값

 

ESP32 MicroPython ADC편 : 아날로그 센서 값

안녕하세요. 오늘은 ESP32 MicroPython ADC편입니다. 아날로그 값을 읽는 방법에 대해서 한번 알아보도록 하겠습니다. 혹시 처음 보시는 분들은 아래 링크를 따라서 순서대로 와주시면 될 것 같습니다

kgu0724.tistory.com

2023.03.29 - [메이커 이야기/ESP32] - ESP32 MicroPython DAC편 : 아날로그 출력

 

ESP32 MicroPython DAC편 : 아날로그 출력

오늘은 ESP32를 활용해서 아날로그 출력에 대해서 한번 살펴보겠습니다. 아두이노와는 다르게 ESP32는 DAC기능을 지원합니다. Digital신호를 아날로그로 출력하는 기능이죠. ESP32는 8bit DAC를 제공하고

kgu0724.tistory.com

 

반응형