일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Arduino Servo Motor
- 적층형 3D 프린터
- support
- Theo Jansen Mechanism
- Arduino Ultrasonic Sensor
- 서보 모터
- 드론
- 아두이노
- 파이썬
- 큐라
- FDM
- MHEV
- 테오 얀센 메커니즘
- 아두이노 LED 예제
- Arduino
- Arduino LED example
- 아두이노 서보 모터
- Cura
- Arduino IDE
- Servo Motor
- 2020 LG gram
- Cura 사용법
- LG gram
- 큐라 사용법
- python
- 3D Printer
- Jansen Linkage
- 3D 프린터
- gcode
- Drone
- Today
- Total
Mechanic 공방
19. 아두이노 서보 모터 실습 (3) with 가변 저항 본문
이번 포스팅에서는 가변 저항을 사용한 서보 모터 제어에 대한 실습을 진행하고자 한다.
가변 저항이란 말 그대로 저항값을 변화시킬 수 있는 부품이다.
아두이노에 사용할 때에는 아날로그 핀에 연결하여 값을 읽어 들일 수 있다.
[회로도]
서보 모터의 회로도는 이전 실습과 동일하다.
가변 저항의 경우, 위에 언급했듯이 아날로그 핀인 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() 구문을 사용하였다.
[동작 영상]
위 코드가 정상적으로 업로드되었다면, 아래와 같은 동작을 볼 수 있다.
'아두이노 (Arduino)' 카테고리의 다른 글
18. 아두이노 서보 모터 실습 (2) (4) | 2020.08.23 |
---|---|
17. 아두이노 서보 모터 실습 (1) (0) | 2020.08.22 |
16. 아두이노 초음파 센서 실습 (2) with LED (0) | 2020.08.18 |
15. 아두이노 초음파 센서 실습 (1) (0) | 2020.08.16 |
14. 인터럽트 (Interrupt) (0) | 2020.07.31 |