오늘은 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 시작하기
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
'메이커 이야기 > 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 |