안녕하세요, 고고메이커입니다.
이번 글에서는 가변저항을 사용하는 법에 대해 알아보려 합니다.
우선, 가변저항이란 무엇일까요?
말 그대로 변할 수 있는(가변) 저항이라는 것입니다.
가변저항은 극성이 따로 없지만, 저항 값을 출력하는 핀은 정해져 있습니다.
대부분의 가변저항들은 양 끝(또는 모여있는 두 핀)이 전원을 연결하는 곳이며, 나머지 한 곳이 저항값을 출력하는 핀입니다.
출력하는 값은 analoginput핀(아두이노 우노 기준 A0~A5)에서 받을 수 있으며, 값의 범위는 0~1023까지 입니다.
백문이 불여일견! 모르겠어도 한 번 실습을 해 봅시다.
실습1-기본익히기
우선, 가변저항의 값을 받아 시리얼창에 출력해 보겠습니다.
준비물 :
아두이노 UNO보드 · · · · · · · 1개
가변저항 · · · · · · · · · · · · 1개
MM 점퍼선 · · · · · · · · · · · 3개
회로는 이렇습니다.


이번 프로그램의 소스 코드입니다.
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(analogRead(A0));
delay(100);
}
이 코드를 실행시키고 아두이노 시리얼 창을 켜봅시다.
그리고 나서 가변저항을 돌리면 값이 변할 것입니다. 또한, +에 연결한 쪽으로 갈수록 값이 커질 것이고, -쪽으로 갈수록 값이 작아질 것입니다.
만약 건드리지 않는데 값이 변한다면, 문제가 있는 것입니다.
작동영상
실습2-응용하기
이번에는 가변저항을 가지고 LED의 밝기를 조절해 봅시다.
이 일을 하기 전에, 먼저 알아야 할 소프트웨어적인 부분이 있습니다.
바로 map함수인데요,
이 함수는 값의 범위를 줄일 수 있는 함수입니다.
구조는 이렇습니다.
map(주는 값, 기존 범위 최소값, 기존 범위 최고값, 원하는 범위 최소값, 원하는 범위 최고값)
다시 얘기하자면, 기존 범위에 있던 값을 새로운 범위에서 해당하는 값을 찾아주느 것입니다.
이 함수를 왜 쓸까요?
바로 analog input의 범위는 0~1023인데 비해, analog output의 범위는 0~255까지이기 때문입니다.
그렇다면 위와 같은 경우에 map함수를 어떻게 사용할가요?
map(analoginput, 0, 1023, 0, 255);
이렇게 사용하게 되겠죠.
자, 이야기는 이쯤에서 마치고 이제 실습을 한 번 해 봅시다!
준비물 :
아두이노 UNO보드 · · · · · · · 1개
220Ω(또는 330Ω) 저항 · · · · · 1개
LED · · · · · · · · · · · · · · · 1개
가변저항 · · · · · · · · · · · · 1개
MM 점퍼선 · · · · · · · · · · · 5개
회로는 이렇습니다.


이번 프로그램의 소스 코드입니다.
#define LED1 3
void setup() {
Serial.begin(115200);
}
void loop() {
Serial.println(analogRead(A0));
analogWrite(LED1, map(analogRead(A0), 0, 1023, 0, 255));
}
이 코드를 실행시키면, LED의 밝기가 가변저항을 돌림에 따라 바뀔 것입니다.
작동영상
지금까지 다양한 방법으로 가변저항을 제어 해 보았습니다.
어땠나요? 아두이노와 조금 더 가까워 진 것 같나요?
저 고고메이커는 여러분들이 아두이노와 절친한 사이가 되기 바랍니다.
다음 글에서 또 만나요!
'Arduino' 카테고리의 다른 글
| 3. 아두이노 LED 제어 (1) | 2021.02.11 |
|---|---|
| 2. 아두이노 기초 사용법 (0) | 2021.02.11 |