[아두이노 프로젝트] 서보모터와 조이스틱을 활용한 로봇 팔 만들기
페이지 정보
작성자 메카 작성일16-03-17 18:23 조회9,359회 댓글0건관련링크
본문
안녕하세요 메카솔루션입니다.
이번에는 아두이노를 이용한 로봇 팔을 소개하도록 하겠습니다.
총 4개의 서보 모터를 사용하며, 조이스틱 1개와 스위치 두개로 조작할 수 있습니다.
사용한 소스코드 입니다.
#include<Servo.h>
Servo base; Servo shoulder; Servo elbow; Servo grip;
//서보 이름 설정
int x = A0; int y = A1;
// 조이스틱 설정
int z = 13; int r = 12;
//스위치 설정
int base1, shoulder1, elbow1, grip1;
//서보 각도값 변수 지정
void setup() {
pinMode(z, INPUT); pinMode(r, INPUT);
//스위치 인풋 설정
base.attach(3); shoulder.attach(5); elbow.attach(6); grip.attach(9);
//서보 핀 설정
base.write(90); shoulder.write(90); elbow.write(90); grip.write(90); base1 = shoulder1 = elbow1 = grip1;
//아두이노 실행했을때 서보의 초기 각도값 설정
}
void loop() {
if (analogRead(x) >= 500) { base1 = base1 + ((analogRead(x) - 500) / 400); } else { base1 = base1 - ((500 - analogRead(x)) / 400); }
// 베이스 움직인값
if (analogRead(y) >= 500) { shoulder1 = shoulder1 + ((analogRead(y) - 500) / 400); } else { shoulder1 = shoulder1 - ((500 - analogRead(y)) / 400); }
//숄더 움직인값
if (digitalRead(r) == HIGH) { elbow.write(90); } else { elbow.write(120); }
//버튼을 누를때 엘보 동작
if (digitalRead(13) == HIGH) { grip.write(140); } else { grip.write(60); }
//버튼을 누를때 그립 동작
if (base1 <= 0) { base1 = 38; } else if (base1 >= 170) { base1 = 170; } else { ; }
if (shoulder1 <= 30) { shoulder1 = 30; } else if (shoulder1 >= 170) { shoulder1 = 170; } else { ; }
//최대, 최소 각도 설정
base.write(base1); shoulder.write(shoulder1);
//베이스 숄더 동작 값 지정
} |
if (analogRead(x) >= 500)
{
base1 = base1 + ((analogRead(x) - 500) / 400);
}
else
{
base1 = base1 - ((500 - analogRead(x)) / 400);
}
루프문 중 이 부분은 서보모터가 움직일때 이전 값(base1)에 새 값을 더해서 동작하게 하는,
즉 절댓값으로 움직이지 않고 상대값으로 움직이는 서보를 만들어주기 위한 부분입니다.
그리고 간단한 조작 영상입니다.
물건을 집어 옮기는 영상입니다.
제 컨트롤이 너무 미숙하네요...
이상으로 마치겠습니다!
댓글목록
등록된 댓글이 없습니다.
최신댓글