728x90

이번에는 가변저항을 사용해서 값을 받아보자.

먼저 가변저항이 뭔지 부터 알아보자.



가변저항은 이렇게 생겼다. 다리가 3개있고 돌리는 레버가 있다.

원래 저항은 저항값이 고정이지만 가변저항은 0에서부터 특정값까지 가변해서 저항값을 가진다.



뒷면을 보면 저항값을 알 수있다. B100K라고 되있으면 B형가변저항이며 100,000옴이라는 뜻이다.

즉 최대값이 100K라는 뜻이다. B형은 값이 리니어 스케일이라는 뜻이다.

즉 레버 돌리는 비율과 저항값이 일정하게 증가한다는 뜻이다. 레버를 50%돌리면 저항은 50,000옴이 된다.


저항의 다리는 왼쪽과 오른쪽은 별로 중요하지 않고 가운데는 핀을 꽂아준다.

양쪽에는 각각 5V와 GND를 꽂아주는데 방향은 중요하지 않으므로 한쪽에 GND를 꽂고 한쪽에는 5V를 꽂는다.

핀은 아날로그에 꽂아준다.



아날로그핀 하나를 가운데 꽂고 양쪽으로 5V와 GND를 꽂는다.



실제로 위와같이 꽂으면 된다.

const int pinREG = A5;

int val;

void setup() {
Serial.begin(
9600);
pinMode(pinREG,INPUT);

}

void loop() {
val = analogRead(pinREG);
Serial.println(val);
}

실행할 예제코드는 위와 같다.

위의 코드는 아날로그핀에서 값을 읽어서 화면에 보여주는 예제이다.

실행시켜보자.



보다시피 레버를 돌리면 저항이 올라가고 반대로 돌리면 저항이 내려간다.

표시값은 0부터 1023 사이의 값이 표시된다.

이번에는 가변저항을 응용해서 가변저항의 값을 받아서 그 값을 바탕으로 LED의 밝기를 밝혀보자.

이렇게하려면 LED는 아날로그 출력을 해야하므로 PWM에 꽂아야한다.



회로를 위와같이 연결해준다.

이 때 회로를 여러개 써야하니까 회로의 긴쪽을 사용해준다.

뭔말이냐면 회로도를 보자.



브레드보드의 가장자리는 길게 한선이라고 했다.

그래서 그라운드를 모두 몰아주고 볼트도 모두 몰아주면 쉽게 라인을 짤 수 있다.


const int pinLED = 3;
const int pinREG = A5;

long val;

void setup() {
pinMode(pinREG,INPUT);
pinMode(pinLED,OUTPUT);
}

void loop() {
val = analogRead(pinREG);
val = val*255/1023;
analogWrite(pinLED,val);
}

이 코드는 데이터를 입력받아서 LED밝기에 반영한다.

여기서 LED밝기는 255까지되고 입력값은 1023까지 표현하므로 값을 정확하게 하기위해서

val*255/1023을 해서 값을 255의 배율에 맞게 조정해준다.

아두이노는 int가 2바이트이므로 값이 넘어갈 수 있으니 val을 long타입으로 바꿔준다.

이제 실행시켜보자.



이제 값을 받아서 LED를 밝힐 수 있다.

+ Recent posts