ESP32 - 포텐쇼미터 | ESP32 - Potentiometer

이 튜토리얼은 여러분에게 ESP32를 포텐쇼미터와 함께 사용하는 방법을 안내합니다. 구체적으로, 우리는 다음을 학습할 것입니다:

준비물

1×ESP-WROOM-32 Dev Module 쿠팡 | Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×Potentiometer 쿠팡 | Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×(Recommended) Screw Terminal Expansion Board for ESP32 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

포텐쇼미터에 대하여

포텐쇼미터(회전 각도 센서로도 알려짐)는 설정을 변경하는 데 사용됩니다(예: 스피커의 볼륨, 방의 온도, 램프의 밝기 등).

Potentiometer Pinout

포텐쇼미터 핀배열

포텐쇼미터는 보통 3개의 핀을 가지고 있습니다:

  • VCC 핀: 이 핀을 VCC(5V 또는 3.3V)에 연결하세요.
  • GND 핀: 이 핀을 GND(0V)에 연결하세요.
  • 출력 핀: 이 핀에서 ESP32의 입력 핀으로 전압을 출력합니다.
Potentiometer Pinout

※ NOTE THAT:

GND 핀과 VCC 핀은 서로 교환할 수 있습니다.

전위차계의 작동 원리

포텐쇼미터의 축은 0°(GND 핀에 가장 가까움)에서 VCC 핀에 가장 가까운 각도인 ANGLE_MAX까지 회전할 수 있습니다.

출력 핀의 전압은 축의 각도 위치에 직접적으로 비례하여 0에서 VCC까지 변화합니다. 아래 표는 각도와 출력 핀의 전압 사이의 관계를 보여줍니다:

Angle Voltage
0v
ANGLE_MAX°VCC
angle°angle° × VCC / ANGLE_MAX°

※ NOTE THAT:

ANGLE_MAX 값은 제조업체에 따라 다릅니다.

How Potentiometer Works

ESP32 - 로터리 포텐쇼미터

ESP32의 아날로그 입력 핀은 전압(0V와 3.3V 사이)을 정수 값(0부터 4095 사이)으로 변환합니다. 이것을 ADC 값 또는 아날로그 값이라고 합니다.

우리는 가변저항의 출력 핀을 ESP32의 아날로그 입력 핀에 연결한 다음, 핀에서 아날로그 값을 읽을 수 있습니다.

입력 핀에서의 아날로그 값을 다른 값으로 재조정할 수 있습니다. 사용 사례를 살펴봅시다:

  • 아날로그 값을 포텐쇼미터의 각도에 맞게 재조정하세요.
  • 아날로그 값을 포텐쇼미터의 전압에 맞게 재조정하세요.
  • 아날로그 값을 설정 값(예: 스피커의 볼륨, 방의 온도, 램프의 밝기 등)에 맞게 재조정하세요.

범위 재조정

FROM TO
Anglerotated by userANGLE_MAX°
Voltagefrom potentiometer's pin 0V3.3V
ADC valueread by ESP32 04095
Setting valueconverted by ESP32 VALUE_MINVALUE_MAX

포텐쇼미터와 ESP32 사이의 배선도

ESP32 Potentiometer Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

ESP32 및 다른 구성 요소에 전원을 공급하는 방법에 대해 잘 알지 못하는 경우, 다음 튜토리얼에서 안내를 찾을 수 있습니다: ESP32 전원 공급 방법.

포텐쇼미터를 프로그래밍하는 방법

analogRead() 함수를 사용하여 포텐쇼미터의 출력 핀에 연결된 입력 핀에서 값을 읽습니다.

analogValue = analogRead(36); // GPIO36

맵(map) 함수를 사용하여 포텐쇼미터의 각도에 맞게 재조정하세요.

angle = map(analogValue, 0, 4095, 0, ANGLE_MAX);

포텐쇼미터의 전압에 맞게 재조정하세요.

voltage = map(analogValue, 0, 4095, 0, 3.3);

제어 가능한 값으로 재조정하기 (예: 스테레오 볼륨, 밝기, 직류 모터의 속도 등)

value = map(analogValue, 0, 4095, VALUE_MIN, VALUE_MAX);

예를 들어, LED의 밝기에 맞게 다시 조정하는 것입니다. 이 튜토리얼에서 언급한 바와 같이, LED의 밝기는 0 (항상 꺼짐)부터 255 (항상 켜짐)까지의 PWM 값으로 조절할 수 있습니다. 따라서, 우리는 아날로그 값을 다음과 같이 LED의 밝기(꺼짐에서 가장 밝은 상태까지)에 매핑할 수 있습니다:

brightness = map(analogValue, 0, 4095, 0, 255);

만약 당신이 밤 불빛에서 가장 밝은 빛까지 LED의 밝기를 조절하고 싶다면,

nightlight = 100; // 원하는 밝기에 따라 brightness = map(analogValue, 0, 4095, nightlight, 255);

※ NOTE THAT:

map() 함수는 아날로그 값을 int 또는 long 유형 값으로 재조정하는 데에만 사용될 수 있습니다. 제어 가능한 값이 float 유형이라면, map() 함수 대신 floatMap() 함수를 사용해야 합니다.

floatMap() 함수:

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

ESP32 코드

/* * 이 ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp32/esp32-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // 재설정을 누르면 한 번 실행되는 설정 루틴입니다: void setup() { // 초당 9600비트로 시리얼 통신을 초기화합니다: Serial.begin(9600); } // 루프 루틴은 영원히 반복해서 실행됩니다: void loop() { // 아날로그 핀 GPIO36에서 입력을 읽습니다: int analogValue = analogRead(36); // 재조정하여 포텐쇼미터의 전압(0V에서 3.3V까지)으로 변환합니다: float voltage = floatMap(analogValue, 0, 4095, 0, 3.3); // 읽은 값을 출력합니다: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

사용 방법

  • ESP32를 처음 사용하는 경우, Arduino IDE에서 ESP32 환경 설정하는 방법을 참조하세요.
  • 위의 코드를 복사하여 Arduino IDE에 붙여넣으세요.
  • Arduino IDE에서 Upload 버튼을 클릭하여 ESP32 보드에 코드를 컴파일하고 업로드하세요.
Arduino IDE Upload Code

아두이노 IDE에서 시리얼 모니터 열기

How to open serial monitor on Arduino IDE
  • 전위차계를 회전시키세요.
  • 시리얼 모니터에서 결과를 확인하세요. 아래와 같습니다:
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 4095, Voltage: 3.30 Analog: 4095, Voltage: 3.30
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!