Mechanic 공방

19. 아두이노 서보 모터 실습 (3) with 가변 저항 본문

아두이노 (Arduino)

19. 아두이노 서보 모터 실습 (3) with 가변 저항

H-Mechanic 2020. 8. 26. 20:30
728x90
반응형

 

이번 포스팅에서는 가변 저항을 사용한 서보 모터 제어에 대한 실습을 진행하고자 한다.

 

가변 저항이란 말 그대로 저항값을 변화시킬 수 있는 부품이다.

 

아두이노에 사용할 때에는 아날로그 핀에 연결하여 값을 읽어 들일 수 있다.

 

[회로도]

서보 모터의 회로도는 이전 실습과 동일하다.

 

가변 저항의 경우, 위에 언급했듯이 아날로그 핀인 A0핀에 연결하였으며, 전원의 경우 5V를 부여하면 된다.

 

[코드 설명]

#include <Servo.h>

int servo_pin = 8;
int ang_init = 0;

Servo servo;

void setup() {
  Serial.begin(9600);
  servo.attach(servo_pin);
  servo.write(ang_init);
}

void loop() {
  int deg_in = analogRead(A0);
  int deg = map(deg_in,0,1024,0,180);
  servo.write(deg);
  Serial.println(deg_in);
}

 

본 실습에서는 가변 저항을 사용하여 가변 저항의 이동에 따라 서보모터를 동일하게 구동시키는 예제를 해보고자 한다.

 

가변 저항이란 손잡이를 돌림으로써 저항 값을 변화시키는 부품이며, 아두이노에서는 아날로그 핀을 사용하여 값을 받을 수 있다.

 

아날로그 핀으로부터 값을 읽어오기 위해서는 ‘analogRead()’라는 함수를 사용하면 된다.

 

이 때 괄호 안에는 해당 부품이 연결된 아날로그 핀의 번호(A0~A5)를 적어주면 된다.

 

가변 저항으로부터 받는 값의 경우 범위가 0~1023의 숫자를 가진다.

 

하지만 본 실습에서 사용하는 서보 모터의 경우 0~180도의 범위만 입력할 수 있기 때문에 해당 범위를 변환시켜줘야 한다.

 

이때 사용되는 함수는 ‘map’ 함수이다.

 

Map 함수의 요소에는 바꾸고자 하는 변수명, 해당 변수의 범위, 바꾸고 싶은 범위를 각각 입력하면 된다.

 

즉, 위 코드 상에서는 'deg_in'이라는 입력 변수의 원래 범위가 0~1023인데, 이를 0~180의 범위로 변환시켜 'deg'라는 변수에 부여하겠다는 의미를 지닌다.

 

마지막으로 변환시킨 각도 값을 서보 모터에 부여하여 제어하기 위해, Servo.write() 구문을 사용하였다.

 

[동작 영상]

위 코드가 정상적으로 업로드되었다면, 아래와 같은 동작을 볼 수 있다.

 

 

728x90
반응형