망가진 비행기 조이스틱과 아두이노를 이용하여 설계프로그램 조작하기
페이지 정보
작성자 Fischer Müller 작성일16-10-16 23:06 조회4,499회 댓글0건관련링크
본문
안녕하세요! 글을 처음 올려봅니다.
원래 이 프로젝트는 예전에 진행했던 프로젝트인데 다시 올려보았습니다.(부품누락으로 작동이 버벅거리네요.)
아두이노 레오나르도는 일반 아두이노와 다르게
USB 통신 기능을 통합한 Atmega32U4 칩이 내장되어있습니다.
USB의 Communications Device Class (CDC) 드라이버의 인스턴스가 생성되면서 연결됩니다.
거의 모든 설계툴이 이 방식을 이용합니다. 그래서 어떤 업체에서는 설계전용 3D마우스를 판매합니다.
하지만 20만원이 넘는 가격에 도저히 살 수 없더군요... 그래서 만들었습니다.
버리는 조이스틱과, 아두이노 레오나르도를 이용하여 조작기를 만들어봤습니다.
<소스>
#include <Keyboard.h>
#include <Mouse.h>
const int Button = 6;
const int xAxis = A0;
const int yAxis = A1;
const int ledPin = 13;
const int buttonPin = 2;
int range = 12;
int responseDelay = 5;
int threshold = range/4;
int center = range/2;
int buttonState = 0;
boolean mouseIsActive = false;
void setup() {
pinMode(Button, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
Mouse.begin();
delay(1000);
}
void loop() {
buttonState = digitalRead(buttonPin);
mouseIsActive = !mouseIsActive;
digitalWrite(ledPin, mouseIsActive);
int xReading = readAxis(A0);
int yReading = readAxis(A1);
if (mouseIsActive) {
if (buttonState == HIGH) {
Mouse.press(MOUSE_MIDDLE);
Mouse.move(xReading, yReading, 0);
} else {
digitalWrite(ledPin, HIGH);
}
}
delay(responseDelay);
}
int readAxis(int thisAxis) {
int reading = analogRead(thisAxis);
reading = map(reading, 0, 1023, 0, range);
int distance = reading - center;
if (abs(distance) < threshold) {
distance = 0;
}
return distance;
}
소스를 보시면 수시로 포텐셔미터의 아날로그값을 측정하여 변환한 후 마우스함수에 넣는방식입니다.
아두이노 레오나르도만 사용가능한 함수들이 있는데요.
Mouse.move(x,y);
Mouse.click(MOUSE_LEFT);
입니다. .move에 x값, y값을 넣으면 해당 좌표만큼 움직입니다. 원점은 움직이기 전 위치가 원점입니다.
.click에 LEFT,MIDDLE,RIGHT를 넣으시면 클릭이 됩니다.
댓글목록
등록된 댓글이 없습니다.