코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-05 15:42:05
아두이노는 다양한 응용 분야에 맞춰서 여러가지 모터를 사용할 수 있습니다.
모터의 종류에는 일반적으로 많이 쓰이는 DC 모터(직류 모터), 0-180도 혹은 360 까지 각도제어가 가능한 서보 모터,
일정한 각도와 힘으로 움직이는 스텝 모터 등이 있으며 이밖에도 토크와 구동전압, 작동 방식에 따른 다양한 모터가 있습니다.
그 중 서보모터는 각도를 정밀하게 제어할수 있는 장점을 이용하여
로보틱스 분야에서 물체의 관절부분에 많이 사용되고 있습니다.
이 예제에서는 가변저항기가 돌아간 각도(저항값)에 따라 서보의 각도를 조절해 보겠습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 우노 R3 | 1 | 아두이노 |
2 | 서보모터 | 1 | 서보모터 |
3 | 가변저항 | 1 | 저항 |
4 | 브레드보드 | 1 | 브레드보드 |
5 | 점퍼케이블 | 6 | 점퍼케이블 |
부품명 | 아두이노 우노 R3 | 서모 모터 | 기변 저항 | 브레드보드 | 점퍼케이블 |
파 트 | x1 | X1 | X1 | X1 | X6 |
아래의 코드를 아두이노에 업로드 합니다.
/* 출처 : www.arduino.cc */ #include <Servo.h> //서보 라이브러리를 불러옵니다. const int potentiometerPin = 0;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다. Servo servo; void setup() { servo.attach(9); // 서보를 사용하는 핀으로 디지털 핀9번을 설정합니다. } void loop(){ int value = analogRead(potentiometerPin); //가변저항의 값을 읽어들입니다. int angle = map(value,0,1023,0,179);//읽어 들인 값을 0에서 179까지 변환 합니다. servo.write(angle); //서보의 각도를 설정합니다. delay(15); // 서보가 지정한 각도까지 움직이는 동안 대기 }
int angle = map(value,0,1023,0,179);//읽어 들인 값을 0에서 179까지 변환 합니다.
map함수는 map(value, 현재 최소값, 현재 최대값, 변경하고자 하는 최소 값, 변경하고자 하는 최대값)으로 구성되며,
아나로그 센서에서 읽어 온 값을 처리할때에 유용하게 사용됩니다.
이 예제 에서는 회전 각도가 Servo 라이브러리에서 지원하는 범위보다 작은 서보가 있을수 있는데,
사용 중인 서보가 맨 끝 값에 도달해서 떨림 현상을 보일 경우 그 현상이 사라질 때까지 map 함수의 출력 범위를 축소해 주시면 됩니다.
처음 시작점에서 떨림 현상을 보이는 경우에는 반대로 출력 범위 시작값을 높여줍니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!