안녕하세요, 고고메이커입니다.

 

이번 글에서는 가변저항을 사용하는 법에 대해 알아보려 합니다.

 

우선, 가변저항이란 무엇일까요?

말 그대로 변할 수 있는(가변) 저항이라는 것입니다.

가변저항은 극성이 따로 없지만, 저항 값을 출력하는 핀은 정해져 있습니다.

대부분의 가변저항들은 양 끝(또는 모여있는 두 핀)이 전원을 연결하는 곳이며, 나머지 한 곳이 저항값을 출력하는 핀입니다.

출력하는 값은 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

+ Recent posts