아두이노 - 가변 저항기 | Arduino - Potentiometer
이 튜토리얼에서는 다음을 배우게 됩니다:
- 포텐쇼미터가 어떻게 동작하는지.
- 포텐쇼미터를 아두이노에 어떻게 연결하는지.
- 포텐쇼미터에서 값을 읽어 다른 제어 가능한 값으로 변환하는 방법을 아두이노에 프로그래밍하는 방법.
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | Potentiometer | 쿠팡 | Amazon | |
1 | × | Breadboard | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
포텐쇼미터에 대하여
회전형 포텐쇼미터(또는 회전 각도 센서라고 함)는 어떤 것의 값을 수동으로 조정하는 데 사용됩니다(예: 스테레오의 볼륨, 램프의 밝기, 오실로스코프의 줌 레벨...).
핀배열
포텐쇼미터는 보통 3개의 핀을 가지고 있습니다:
- GND 핀: GND(0V)에 연결해야 합니다.
- VCC 핀: VCC(5V 또는 3.3v)에 연결해야 합니다.
- 출력 핀: 아두이노의 입력 핀에 전압을 출력합니다.
※ NOTE THAT:
GND 핀과 VCC 핀은 교환 가능합니다.
작동 원리
포텐시오미터의 축은 0°(GND와 가장 가까운 지점)부터 상한 각도(VCC 핀과 가장 가까운 지점)까지 회전할 수 있으며, 이 상한 각도를 ANGLE_MAX라고 합니다.
출력 핀의 전압은 GND의 전압부터 VCC의 전압까지 변합니다. 출력 전압은 축의 회전 각도에 직접 비례합니다.
- 각도가 0°이면 출력 핀의 전압은 0V입니다.
- 각도가 ANGLE_MAX이면 출력 핀의 전압은 VCC의 전압입니다.
- 각도가 0°와 ANGLE_MAX 사이인 경우, 출력 전압 = 각도 × VCC / ANGLE_MAX입니다.
※ NOTE THAT:
ANGLE_MAX 값은 제조사에 따라 달라집니다. 실제로 우리는 ANGLE_MAX의 값에 대해 일반적으로 관심을 가지지 않습니다, 회전된 각도를 계산해야 할 때를 제외하고는요(사용 사례 부분 참조).
아두이노 - 로터리 포텐쇼미터
아두이노의 A0에서 A5 핀은 아날로그 입력으로 작동할 수 있습니다. 아날로그 입력 핀은 전압(0v와 VCC 사이)을 정수 값(0에서 1023 사이)으로 변환하는데, 이를 ADC 값 또는 아날로그 값이라고 합니다.
포텐쇼미터의 출력 핀을 아날로그 입력 핀에 연결함으로써, 핀에서 아날로그 값을 읽고 이를 의미 있는 값으로 변환할 수 있습니다.
아두이노가 얻는 값은 각도도 아니고 전압도 아닙니다. 그것은 0부터 1023까지의 정수 값입니다.
아날로그 입력 핀에서 정수 값을 얻은 후, 이 값을 다른 값으로 재조정합니다. 사용 사례를 살펴봅시다.
사용 사례
- 전위차계의 각도로 재조정합니다.
- 전위차계의 전압으로 재조정합니다.
- 제어 가능한 값으로 재조정합니다(예: 스테레오의 볼륨, 밝기, 직류 모터의 속도...). 이것은 가장 일반적으로 사용되는 경우입니다.
범위 재조정
FROM | TO | |||
---|---|---|---|---|
Angle | rotated by user | 0° | → | ANGLE_MAX |
Voltage | from potentiometer's pin | 0V | → | VCC |
ADC value | read by Arduino | 0 | → | 1023 |
Other value | converted by Arduino | VALUE_MIN | → | VALUE_MAX |
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
포텐쇼미터를 위한 프로그래밍 방법
analogRead() 함수를 사용하여 포텐쇼미터의 출력 핀에 연결된 입력 핀에서 값을 읽습니다.
- map() 함수를 사용하여 포텐시오미터의 각도에 맞게 재조정하세요.
포텐쇼미터의 전압에 맞게 재조정하십시오.
제어 가능한 값으로 재조정하기 (예: 스테레오의 볼륨, 밝기, 직류 모터의 속도 등)
예를 들어, LED의 밝기에 맞게 재조정하는 것입니다. 이 튜토리얼에서 언급했듯이, LED의 밝기는 PWM 값으로 제어할 수 있습니다. 0(항상 꺼짐)에서 255(항상 켜짐)까지입니다. 그러므로, 아날로그 값을 LED의 밝기에 매핑할 수 있습니다(꺼진 상태에서 가장 밝은 상태까지) 다음과 같이:
밤에 사용하는 조명부터 가장 밝은 빛까지 LED의 밝기를 조절하고 싶다면,
※ NOTE THAT:
map() 함수는 아날로그 값을 int 또는 long 타입 값으로 재조정하는 데만 사용될 수 있습니다. 제어 가능한 값이 float 타입인 경우, map() 함수 대신 floatMap() 함수를 사용해야 합니다.
floatMap() 함수:
아두이노 코드
사용 방법
- 위의 코드를 복사하고 Arduino IDE로 열기
- Arduino IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드하기
- 시리얼 모니터 열기
- 포텐쇼미터를 돌리세요
- 시리얼 모니터에서 결과를 확인하세요
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
도전해보세요
다음 프로젝트 중 하나를 수행하기 위해 가변 저항을 사용하세요:
- 서보 모터의 위치 제어. 힌트: 아두이노 - 서보 모터를 참조하세요.
- LED의 밝기 변경. 힌트: 아두이노 - 페이드 Led를 참조하세요.
추가 지식
GND 핀과 VCC 핀은 서로 바꿀 수 있습니다. 이 두 핀에 관한 정해진 규칙이 없습니다. 만약 한 핀을 GND 핀으로 선택한다면, 다른 하나는 VCC 핀이 됩니다. 유의해야 할 단 하나의 사항이 있습니다. 이 핀들을 서로 바꿀 때, 출력 핀에서의 전압 값이 반대로 됩니다.