ESP32 C3 Super Mini 포텐셔미터
포텐셔미터는 ESP32 C3 Super Mini 프로젝트에 조절 노브를 추가하는 가장 쉬운 방법입니다. 노브를 돌리면 보드가 숫자를 읽고, 이 숫자를 볼륨, 밝기, 속도 또는 다른 설정에 사용할 수 있습니다. 초보자를 위한 훌륭한 첫 아날로그 프로젝트입니다.
이 튜토리얼에서 배울 내용:
- 포텐셔미터의 작동 원리
- 포텐셔미터를 ESP32 C3 Super Mini에 배선하는 방법
- 포텐셔미터 값을 읽도록 ESP32 C3 Super Mini를 프로그래밍하는 방법
- 그 값을 각도, 전압 또는 설정 값으로 변환하는 방법
- 초보자가 아날로그 핀에서 흔히 하는 실수를 피하는 방법

필요한 하드웨어
| 1 | × | ESP32 C3 Super Mini | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | 포텐셔미터 | 쿠팡 | 아마존 | |
| 1 | × | 노브가 있는 포텐셔미터 모듈 | 쿠팡 | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (옵션) DC 커넥터 전원 연결 잭 플러그 소켓 | 쿠팡 | 아마존 |
포텐셔미터에 대하여
포텐셔미터(회전 각도 센서라고도 함)는 스피커 볼륨, 방 온도, 램프 밝기 같은 설정을 바꾸는 노브입니다.
주요 특징:
- 간단함: 핀 3개뿐이며 라이브러리가 필요 없습니다.
- 저렴함: 구매할 수 있는 가장 저렴한 부품 중 하나입니다.
- 아날로그 출력: ON/OFF만이 아닌 부드러운 전압을 출력합니다.
- 저전력: 전류를 거의 사용하지 않습니다.
기술 사양:
- 작동 전압: 3.3V 또는 5V (ESP32 C3 Super Mini에서는 3.3V 사용)
- 출력: 0V부터 VCC 핀의 전압까지
- 회전: 0°부터 제조사가 정한 최대 각도까지
- 일반적인 값: 10kΩ이 가장 많이 사용됩니다

포텐셔미터 핀아웃
포텐셔미터에는 보통 핀이 3개 있습니다.
- VCC 핀: 이 핀을 VCC(ESP32 C3 Super Mini에서는 3.3V)에 연결합니다
- GND 핀: 이 핀을 GND(0V)에 연결합니다
- 출력 핀: ESP32 C3 Super Mini의 아날로그 입력 핀으로 전압을 출력합니다

※ 주의:
GND 핀과 VCC 핀은 서로 바꿔 연결할 수 있습니다
WARNING
포텐셔미터에는 항상 5V가 아닌 3.3V로 전원을 공급하세요. ESP32 C3 Super Mini GPIO 핀은 3.3V 전용이며, 출력 핀에 5V가 들어가면 보드가 손상될 수 있습니다.
포텐셔미터의 작동 원리
축은 0°(GND 핀에 가장 가까운 쪽)부터 최대 각도(VCC 핀에 가장 가까운 쪽)까지 회전하며, 이 최대 각도를 ANGLE_MAX라고 합니다.
- 요약하면: 각도가 클수록 출력 핀의 전압이 높아집니다.
- 출력 전압은 축의 위치에 정비례하며, 0부터 VCC까지입니다.
아래 표는 각도와 출력 핀 전압 사이의 관계를 보여줍니다:
| 각도 | 전압 |
|---|---|
| 0° | 0v |
| ANGLE_MAX° | VCC |
| angle° | angle° × VCC / ANGLE_MAX° |
※ 주의:
ANGLE_MAX 값은 제조사에 따라 다릅니다.

ESP32 C3 Super Mini - 회전식 포텐셔미터
ESP32 C3 Super Mini의 아날로그 입력 핀은 전압을 숫자로 바꿉니다.
- 입력 범위: 0V ~ 3.3V
- 출력 숫자: 0 ~ 4095 (이를 ADC 값 또는 아날로그 값이라고 합니다)
- 분해능: 12비트이므로 총 4096단계
- 이 보드의 아날로그 핀: GPIO0 ~ GPIO4만 해당됩니다. 이 튜토리얼에서는 GPIO4를 사용합니다.
포텐셔미터의 출력 핀을 ESP32 C3 Super Mini의 아날로그 입력 핀에 연결한 다음, 그 핀에서 아날로그 값을 읽습니다.
아날로그 값은 다른 값으로 변환할 수 있습니다. 일반적인 사용 사례는 다음과 같습니다:
- 각도로: 노브가 얼마나 돌아갔는지 알 수 있습니다.
- 전압으로: 출력 핀의 실제 전압을 확인할 수 있습니다.
- 설정 값으로: 볼륨, 온도, 밝기, 모터 속도 등.
변환 범위
| 시작 | 끝 | |||
|---|---|---|---|---|
| 각도 | 사용자가 회전 | 0° | → | ANGLE_MAX° |
| 전압 | 포텐셔미터 핀에서 | 0V | → | 3.3V |
| ADC 값 | ESP32 C3 Super Mini가 읽음 | 0 | → | 4095 |
| 설정 값 | ESP32 C3 Super Mini가 변환 | VALUE_MIN | → | VALUE_MAX |
포텐셔미터와 ESP32 C3 Super Mini 간의 배선 다이어그램
배선은 간단합니다: 전원선 두 개와 신호선 하나입니다.
- 참고: VCC에는 3.3V 핀을 사용하세요. 절대 5V를 사용하지 마세요.
- 참고: 신호선은 아날로그 기능이 있는 핀인 GPIO4에 연결합니다.
- 참고: GPIO8이나 GPIO9는 사용하지 마세요. 스트래핑 핀이라 보드가 부팅되지 않을 수 있습니다.
- 참고: GPIO20과 GPIO21은 시리얼 모니터 UART입니다. 비워 두세요.
| 포텐셔미터 핀 | ESP32 C3 Super Mini 핀 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| 출력 | GPIO4 |

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
포텐셔미터 프로그래밍 방법
포텐셔미터를 읽는 데는 함수 하나와 약간의 계산만 필요합니다.
- analogRead() 함수를 사용하여 포텐셔미터의 출력 핀에 연결된 아날로그 입력 핀에서 값을 읽습니다.
- map() 함수를 사용하여 포텐셔미터의 각도로 변환합니다.
- 포텐셔미터의 전압으로 변환합니다:
- 제어 가능한 값(예: 스테레오 볼륨, 밝기, DC 모터 속도 등)으로 변환합니다
- 예를 들어, LED 밝기로 변환하는 경우입니다. 이 튜토리얼에서 언급했듯이 LED 밝기는 0(항상 꺼짐)부터 255(항상 켜짐)까지의 PWM 값으로 제어할 수 있습니다. 따라서 아날로그 값을 LED 밝기(꺼짐부터 가장 밝음까지)로 다음과 같이 매핑할 수 있습니다:
LED를 야간등 수준부터 가장 밝은 수준까지 조절하고 싶다면,
※ 주의:
입력 범위의 최댓값으로 항상 1023이 아닌 4095를 사용하세요. ESP32 C3 Super Mini는 12비트 ADC를 가지고 있습니다. 이전 10비트 보드에서 복사한 코드는 흔히 1023을 사용하며, 이 보드에서는 잘못된 결과를 냅니다.
※ 주의:
map() 함수는 아날로그 값을 int 또는 long 타입 값으로 변환할 때만 사용할 수 있습니다. 제어 가능한 값이 float 타입이라면 map() 함수 대신 floatMap() 함수를 사용해야 합니다.
floatMap() 함수:
ESP32 C3 Super Mini 코드
아래 코드는 GPIO4의 포텐셔미터를 읽고 원시 값과 전압을 모두 출력합니다.
이 코드가 하는 일:
- 시리얼 시작: 115200 보드로 시리얼 모니터를 엽니다.
- ADC 설정: analogSetAttenuation(ADC_11db)으로 핀이 0V부터 3.3V까지 전체 범위를 읽을 수 있게 합니다.
- 노브 읽기: analogRead()가 0부터 4095까지의 숫자를 반환합니다.
- 전압으로 변환: floatMap()이 그 숫자를 소수점이 있는 전압으로 바꿉니다.
- 1초에 한 번 출력: 노브를 돌리면서 쉽게 따라갈 수 있습니다.
빠른 단계
- ESP32 C3 Super Mini가 처음이신가요? 먼저 ESP32 C3 슈퍼 미니 - 시작하기 튜토리얼을 완료하여 개발 환경을 설정하세요.
- 배선: 위와 같이 포텐셔미터를 3.3V, GND, GPIO4에 연결합니다.
- 보드 연결: USB Type-C 케이블로 ESP32 C3 Super Mini를 컴퓨터에 연결합니다.
- IDE 열기: 위 코드를 복사하여 Arduino IDE에 붙여넣습니다.
- 보드 선택: Tools > Board에서 ESP32 C3 Super Mini가 선택되어 있는지 확인합니다.
- 포트 선택: Tools > Port에서 보드의 COM 포트를 선택합니다.
- 업로드: Arduino IDE에서 Upload 버튼을 클릭합니다.
- 시리얼 모니터 열기: 보드레이트를 115200으로 설정합니다.
- 노브 돌리기: 포텐셔미터를 한쪽 끝에서 다른 쪽 끝까지 천천히 돌립니다.
- 결과 확인: 시리얼 모니터에 값이 변하는 것이 표시됩니다. 아래와 같이 보입니다:
- 전문가 팁: 값이 0이나 4095에 도달하지 않으면 VCC와 GND가 단단히 연결되어 있는지 확인하세요. 느슨한 전선이 가장 흔한 원인입니다.
※ 주의:
이 튜토리얼은 analogRead() 함수를 사용하여 센서나 부품에 연결된 ADC(아날로그-디지털 변환기)에서 값을 읽습니다. ESP32 C3 Super Mini의 ADC는 높은 정확도가 필요하지 않은 프로젝트에 적합합니다. 그러나 정밀한 측정이 필요한 프로젝트라면 다음 사항을 염두에 두세요:
- ESP32 C3 Super Mini의 ADC는 완벽하게 정확하지 않으며, 올바른 결과를 얻으려면 보정이 필요할 수 있습니다. ESP32 C3 Super Mini 보드마다 약간씩 차이가 있으므로 보드마다 개별 보정이 필요합니다.
- 보정은 특히 초보자에게 어려울 수 있으며, 항상 원하는 정확한 결과를 얻지 못할 수도 있습니다.
높은 정밀도가 필요한 프로젝트라면 ESP32 C3 Super Mini와 함께 외부 ADC(예: ADS1115)를 사용하거나, 더 신뢰할 수 있는 ADC를 가진 다른 보드를 사용하는 것을 고려하세요. 그래도 ESP32 C3 Super Mini의 ADC를 보정하고 싶다면 ESP32 ADC 보정 드라이버를 참조하세요.
프로젝트 아이디어
노브가 작동하면 실제로 무언가를 제어하는 데 사용해 보세요.
- 디머 스위치: 노브를 돌려 LED 밝기를 바꿉니다.
- 볼륨 노브: 부저나 스피커의 음량을 설정합니다.
- 서보 컨트롤러: 서보 모터를 원하는 각도로 움직입니다.
- 모터 속도 다이얼: DC 모터나 팬의 속도를 바꿉니다.
- 임계값 설정기: 코드를 수정하지 않고 노브로 센서 알람 수준을 설정합니다.
- 메뉴 선택기: OLED나 LCD 화면에서 옵션을 스크롤합니다.
도전 과제
ESP32 C3 Super Mini의 아날로그 입력에 대해 더 배우기 위해 다음 작은 업그레이드를 해보세요.
- 쉬움: 원시 숫자 대신 0%부터 100%까지의 백분율로 값을 출력해보세요.
- 쉬움: 지연 시간을 바꿔 값이 1초에 10번 업데이트되도록 해보세요.
- 보통: 값을 0°부터 270°까지의 각도로 매핑하여 출력해보세요.
- 보통: 출력하기 전에 10번 읽은 값을 평균 내어 값을 안정시켜 보세요.
- 고급: 노브로 PWM을 사용하여 GPIO3에 연결된 LED의 밝기를 설정해보세요.
- 고급: GPIO2에 두 번째 포텐셔미터를 추가하고 두 노브를 동시에 읽어보세요.