일상 박형

카테고리       

안녕하세요 공대 박형입니다.

 

오늘은 아두이노 가변저항 제어를 해보겠습니다.

 

코드부터 보시죠.

 

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값의 데이터를 사용할 수 있는 프로그램을 완성했습니다.

 

 

다음 시간에는 아두이노 시리얼 통신을 통해 값을 read하는 방법에 대해 알아보겠습니다.

 

궁금한 부분은 질문 해주시면 성심껏 답변해드리겠습니다.

 

읽어주셔서 감사합니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band