오늘은 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)
코드 설명
- machine 모듈과 time 모듈을 임포트합니다.
- DAC 모듈의 핀 번호를 dac_pin_num 변수에 할당합니다. 여기서는 25번 핀을 사용하도록 지정합니다.
- DAC 핀 모드를 설정하기 위해 machine.Pin() 함수를 사용합니다. dac_pin 변수에는 dac_pin_num으로 지정한 핀 번호를 전달하고, 이 핀을 DAC 모드로 설정합니다.
- machine.DAC() 함수를 사용하여 dac 변수를 초기화합니다. dac_pin 변수에 할당된 핀을 사용하여 DAC 모듈을 초기화합니다.
- while 루프를 시작합니다. 이 루프는 무한히 반복되며, DAC 값이 지속적으로 출력됩니다.
- for 루프를 사용하여 DAC 값을 지속적으로 증가시키며 출력합니다. range() 함수를 사용하여 0부터 255까지의 값을 반복합니다.
- dac.write() 함수를 사용하여 DAC에 값을 출력합니다. 이 때, i 변수에 저장된 값을 전달합니다.
- time.sleep() 함수를 사용하여 일정 시간 동안 대기합니다. 이 경우, 0.01초의 시간을 대기합니다.
- 다시 for 루프를 사용하여 DAC 값을 감소시키며 출력합니다. range() 함수를 사용하여 255부터 0까지의 값을 반복합니다.
- dac.write() 함수와 time.sleep() 함수를 사용하여 DAC에 값을 출력하고 대기합니다.
- 6번부터 10번까지의 과정을 반복합니다.
아두이노와는 다르게 ESP32에서는 DAC출력을 할 수 있습니다. 진짜 아날로그 출력을 할 수 있는 것이죠.
오늘은 DAC출력에 대해서 간단히 살펴보았습니다. 다음번에는 PWM출력에 대해서 한번 살펴보도록 하겠습니다.
2023.03.14 - [메이커 이야기/ESP32] - ESP32 MicroPython 시작하기
2023.03.16 - [메이커 이야기/ESP32] - ESP32 MicroPython 개발환경 구성하기 : Thonny
2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython 기초 문법 : Python편
2023.03.20 - [메이커 이야기/ESP32] - ESP32 MicroPython GPIO제어 : LED 제어편
2023.03.21 - [메이커 이야기/ESP32] - ESP32 MicroPython GPIO제어(2) : 버튼 제어편
2023.03.26 - [메이커 이야기/ESP32] - ESP32 MicroPython ADC편 : 아날로그 센서 값
2023.03.29 - [메이커 이야기/ESP32] - ESP32 MicroPython DAC편 : 아날로그 출력
'메이커 이야기 > ESP32' 카테고리의 다른 글
ESP32 MicroPython ADC편 : 아날로그 센서 값 (0) | 2023.03.26 |
---|---|
ESP32 MicroPython GPIO제어(2) : 버튼 제어편 (0) | 2023.03.21 |
ESP32 MicroPython GPIO제어 : LED 제어편 (0) | 2023.03.20 |
ESP32 MicroPython 기초 문법 : Python편 (0) | 2023.03.20 |
ESP32 MicroPython 개발환경 구성하기 : Thonny (0) | 2023.03.16 |