아두이노 나노 ESP32 - 포텐쇼미터 | Arduino Nano ESP32 - Potentiometer

이 튜토리얼은 아두이노 나노 ESP32를 포텐쇼미터와 함께 사용하는 방법에 대한 지침을 제공합니다. 자세히, 우리는 배울 것입니다:

준비물

1×Arduino Nano ESP32 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 Arduino Nano 쿠팡 | 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 사이의 배선도

Arduino Nano ESP32 Potentiometer Wiring Diagram

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

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

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

analog_value = analogRead(A5); // A5

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

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

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

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

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

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

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

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

만약 당신이 LED를 야간등에서 가장 밝은 상태로 어둡게 하고 싶다면,

nightlight = 100; // 원하는 밝기에 따라 brightness = map(analog_value, 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 코드

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-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; } // setup 루틴은 리셋 버튼을 누를 때 한 번 실행됩니다: void setup() { // 시리얼 모니터와 통신하기 위해 시리얼을 초기화합니다. Serial.begin(9600); } // loop 루틴은 영원히 계속해서 반복 실행됩니다: void loop() { // 아날로그 핀 A5에서 입력을 읽습니다: int analog_value = analogRead(A5); // 포텐시오미터의 전압(0V에서 3.3V까지)으로 재조정합니다: float voltage = floatMap(analog_value, 0, 4095, 0, 3.3); // 읽은 값을 출력합니다: Serial.print("Analog: "); Serial.print(analog_value); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

사용 방법

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

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

How to open serial monitor on Arduino IDE
  • 포텐쇼미터를 돌리세요.
  • Serial Monitor에서 결과를 확인하세요. 아래와 같이 보입니다:
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.2 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!