반응형
오늘은 서보모터를 제어하는 방법에 대해 알아보겠습니다.
서보모터는 회전이 정해져 있어서 정확한 움직임이 필요한 경우에 사용하는 모터입니다. 서보라는 말 그대로 사용자의 명령에 따라 움직이는 모터로 사용자가 원하는 각도, 속도로 움직일 수 있다. 서보모터는 로봇, 드론, CCTV, 장난감 등 다양한 분야에서 광범위하게 쓰이고 있습니다.
여기서 사용하는 서보모터는 SG90이며 저렴하여 학습용으로 많이 사용되며 0~180도까지만 회전이 가능합니다.
준비물
- 아두이노 우노
- 서버모터 : SG90
회로도
소스코드
#include<Servo.h> //Servo 라이브러리를 추가
Servo servo; //Servo 클래스로 servo객체 생성
int value = 0; // 각도를 조절할 변수 value
void setup() {
servo.attach(7); //맴버함수인 attach : 핀 설정
Serial.begin(9600); //시리얼 모니터 사용
}
void loop() {
if(Serial.available()){ //시리얼 모니터에 데이터가 입력되면
char in_data; // 입력된 데이터를 담을 변수 in_data
in_data = Serial.read(); //시리얼모니터로 입력된 데이터 in_data로 저장
if(in_data == '1') { //입력된 데이터가 1이라면
servo.write(90); //90도 회전
}
else { //그외의 데이터가 입력되면
servo.write(0); //각도를 0으로 초기화
}
}
2) 가변저항으로 서보모터 조절하기
회로도
소스코드
#include <Servo.h>
int servo_pin = 7;
int ang_init = 0;
Servo servo;
void setup() {
Serial.begin(9600);
servo.attach(servo_pin);
servo.write(ang_init);
}
void loop() {
int degree_in = analogRead(A0);
int degree_val = map(degree_in,0,1024,0,180);
servo.write(degree_val);
Serial.println(degree_in);
}
Map 함수의 요소에는 바꾸고자 하는 변수명, 해당 변수의 범위, 바꾸고 싶은 범위를 각각 입력하면 됩니다.
즉, 위 코드 상에서는 'degree_in'이라는 입력 변수의 원래 범위가 0~1023인데, 이를 0~180의 범위로 변환시켜 'degree_val'이라는 변수에 부여하겠다는 의미를 지닙니다.
반응형
'피지컬컴퓨팅 > 아두이노' 카테고리의 다른 글
부저 활용하기(초음파 센서-에어피아노) (2) | 2024.03.15 |
---|---|
부저 활용하기(버튼으로 제어-버튼 피아노) (0) | 2024.03.15 |
아날로그 핀 사용하기(가변저항 이용) (0) | 2024.03.11 |
초음파 센서(HC-SR04) 활용하기 (0) | 2024.03.05 |
PIR 모션센서와 LED 활용하기 (0) | 2024.03.05 |