코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-07-31 05:56:32
출처 : 레오나르도 - aruino.cc
Leonardo는 아두이노 보드의 일종으로 일반적으로 많이 쓰이는 Uno R3와는 달리
Micro B USB를 사용하여 SMD 형태의 ATMEGA32u4 마이크로 칩이 장착되어 있습니다.
가장 큰 특징은 컴퓨터에 연결하면 기본적으로 가상 CDC(연결 장치 클래스) 시리얼/COM포트 이외에,
마우스와 키보드 장치(HID)로 인식이 됩니다. 그래서 UNO에서 구현하기 어려운 마우스/키보드 에뮬레이션을 쉽게 구현 할 수 있습니다.
본 학습에는 총 5종류의 부품이 필요합니다.
NO |
부품명 | 수량 | 상세설명 |
1 | 아두이노 레오나르도 R3 | 1 | 아두이노 |
2 | 푸시 버튼 | 5 | 입력버튼 |
3 | 10KΩ 저항 | 5 | 저항 |
4 | 브레드보드 | 1 | 브레드보드 |
5 | 점퍼 케이블 | 18 | 점퍼 케이블 |
10kΩ 저항 | 브레드보드 | 레오나르도 | 점퍼케이블 | 푸시 버튼 | |
P A R T S |
X 5 |
X 1 | X 1 | X 18 | X 5 |
/*
출처 : www.arduino.cc
한글주석 : www.kocoafab.cc
KeyboardAndMouseControl
다섯개의 푸시버튼을 이용하여 마우스를 컨트롤 합니다.
Hardware:
* 5개의 부시버튼을 각각 D2, D3, D4, D5, D6 핀에 붙입니다.
마우스의 움직임은 항상 상대적입니다. 이 스케치는
네 개의 푸시 버튼을 마우스의 움직임을 설정하도록 사용합니다.
주의: Mouse.move() 커맨드를 사용할때,아두이노가 마우스의 움직임을 대신합니다.
커맨드를 사용하기전에 마우스의 제어를 확인하세요.
created 15 Mar 2012
modified 27 Mar 2012
by Tom Igoe
this code is in the public domain
*/
// 다섯개의 버튼에 핀넘버를 설정합니다.
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;
void setup() { // 각버튼의 초기내용을 설정합니다.:
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
//시리얼 통신(9600)을 시작합니다.:
Serial.begin(9600);
//마우스와 키보드설정을 제어합니다.:
Mouse.begin();
Keyboard.begin();
}
void loop() {
//마우스를 컨트롤하기 위해 시리얼 입력을 사용합니다.
if (Serial.available() > 0) {
char inChar = Serial.read();
switch (inChar) {
case 'u':
// 문자 'u'를 전송하면 마우스 포인터를 화면상의 0,-10 상대좌표만큼 이동합니다.
Mouse.move(0, -10);
break;
case 'd':
// 문자 'd'를 전송하면 마우스 포인터를 화면상의 0,10 상대좌표만큼 이동합니다.
Mouse.move(0, 10);
break;
case 'l':
// 문자 'l'을 전송하면 마우스 포인터를 화면상의 -10,0 상대좌표만큼 이동합니다.
Mouse.move(-10, 0);
break;
case 'r':
// 문자 'r'을 전송하면 마우스 포인터를 화면상의 10,0 상대좌표만큼 이동합니다.
Mouse.move(10, 0);
break;
case 'm':
// 문자 'm'을 전송하면 마우스 왼쪽클릭을 수행합니다.
Mouse.click(MOUSE_LEFT);
break;
}
}
// 키보드입력을 위해 푸시버튼을 설정합니다. :
if (digitalRead(upButton) == HIGH) {
Keyboard.write('u');
// ENTER키를 1ms 만큼 눌렀다 떼기위한 명령어입니다.:
Keyboard.write(KEY_RETURN);
delay(1);
Keyboard.releaseAll();
}
if (digitalRead(downButton) == HIGH) {
Keyboard.write('d');
Keyboard.write(KEY_RETURN);
delay(1);
Keyboard.releaseAll();
}
if (digitalRead(leftButton) == HIGH) {
Keyboard.write('l');
Keyboard.write(KEY_RETURN);
delay(1);
Keyboard.releaseAll();
}
if (digitalRead(rightButton) == HIGH) {
Keyboard.write('r');
Keyboard.write(KEY_RETURN);
delay(1);
Keyboard.releaseAll();
}
if (digitalRead(mouseButton) == HIGH) {
Keyboard.write('m');
Keyboard.write(KEY_RETURN);
delay(1);
Keyboard.releaseAll();
}
}
스케치 업로드 후, 소프트웨어 우측 상단에 보이는 시리얼 모니터 아이콘을 클릭하여,
해당 창이 활성화 되어 있어야 정상적으로 작동합니다.
// 다섯개의 버튼에 핀넘버를 설정합니다.
const int upButton = 2;
const int downButton = 3;
const int leftButton = 4;
const int rightButton = 5;
const int mouseButton = 6;
void setup() { // 각버튼의 초기내용을 설정합니다.:
pinMode(upButton, INPUT);
pinMode(downButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
pinMode(mouseButton, INPUT);
//시리얼 통신(9600)을 시작합니다.: Serial.begin(9600); //마우스와 키보드설정을 제어합니다.: Mouse.begin(); Keyboard.begin()
//마우스를 컨트롤하기 위해 시리얼 입력을 사용합니다.
if (Serial.available() > 0) {
char inChar = Serial.read();
switch (inChar) { case 'u': // 문자 'u'를 전송하면 마우스 포인터를 화면상의 0,-10 상대좌표만큼 이동합니다. Mouse.move(0, -10); break; case 'd': // 문자 'd'를 전송하면 마우스 포인터를 화면상의 0,10 상대좌표만큼 이동합니다. Mouse.move(0, 10); break; case 'l': // 문자 'l'을 전송하면 마우스 포인터를 화면상의 -10,0 상대좌표만큼 이동합니다. Mouse.move(-10, 0); break; case 'r': // 문자 'r'을 전송하면 마우스 포인터를 화면상의 10,0 상대좌표만큼 이동합니다. Mouse.move(10, 0); break; case 'm': // 문자 'm'을 전송하면 마우스 왼쪽클릭을 수행합니다. Mouse.click(MOUSE_LEFT); break;
// 키보드입력을 위해 푸시버튼을 설정합니다. : if (digitalRead(upButton) == HIGH) { Keyboard.write('u'); // ENTER키를 1ms 만큼 눌렀다 떼기위한 명령어입니다.: Keyboard.write(KEY_RETURN); delay(1); Keyboard.releaseAll(); }
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!