void setup()
{
Serial.begin(9600);
}
void loop()
{
int data = analogRead(A5); // A5에 연결된 가변저항의 아날로그값을 data변수에 저장
Serial.println(data);
delay(100);
}
회로도입니다.
가운데 선을 아날로그핀(A5)으로 연결하고 나머지 두 핀을 전원과 그라운드에 연결하면 됩니다.
실제 가변저항은 저런 모양의 것을 많이 사용합니다. 띵커캐드로 작성한 회로도와 같이 가운데 선이 아날로그 신호선, 나머지 선을 전원과 그라운드에 각각 연결하면 됩니다.
가변저항 아날로그 값을 디지털값으로 변환하여 손잡이를 돌릴 때 data변수 값이 변하는것을 확인할 수 있습니다. 이 때 사용하는것이 ADC( Analog Digital Converter)입니다. 여기서는 10bit ABC를 사용하여 0~1023까지의 디지털 값을 불러올 수 있습니다.
추가로 아두이노에 내장된 map함수를 사용하면 숫자의 범위를 조절할 수 있습니다.
예를들어 0~1023까지 변화하는 가변저항 값의 범위를 0~100 혹은 1000~2000의 범위로 변환할 수 있습니다.
코드로 확인해보시죠.
void setup()
{
Serial.begin(9600);
}
void loop()
{
int data = analogRead(A5); // A5에 연결된 가변저항의 아날로그값을 data변수에 저장
int change_data = map( data , 0 , 1023 , 1 , 99 ); // 0~1023이던 범위는 1~99로 변경
Serial.println(change_data);
delay(100);
}
map 함수 사용법
map( 변환할 변수, 변환 전 값의 최소값, 변환 전 값의 최대값, 변환 후 값의 최소값, 변환 후 값의 최대값)
map함수는 5가지 입력을 통해 사용할 수 있습니다. map함수는 pwm제어, 초름파 센서 거리 제어 등 다양한 분야에서 활용할 수 있습니다.
가변저항과 map 함수를 사용해 1~99값의 데이터를 사용할 수 있는 프로그램을 완성했습니다.