중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

아두이노 Leonardo x 푸시버튼-로그아웃하기

2014-08-01 02:28:04

개요


Leonardo
는 아두이노 보드의 일종으로 일반적으로 많이 쓰이는 Uno R3와는 달리
Micro B USB를 사용하여 SMD 형태의 ATMEGA32u4 마이크로 칩이 장착되어 있습니다.
가장 큰 특징은 컴퓨터에 연결하면 기본적으로 가상 CDC(연결 장치 클래스) 시리얼/COM포트 이외에,
마우스와 키보드 장치(HID)로 인식이 됩니다. 그래서 UNO에서 구현하기 어려운 마우스/키보드 에뮬레이션을 쉽게 구현 할 수 있습니다.


출처 : 마이크로 소프트 CTRL + ALT + DEL 전용 키보드 - cheesebrother.com
누군가 재미있는 발상으로 마이크로 소프트 키보드를 해킹하여 만든 시스템 종료 전용 키보드 입니다.

버튼 3개를 동시에 입력하는것도 귀찮아, 손가락 하나로 로그아웃을 하고싶은 분들을 위해
레오나르도푸시 버튼 한개로 로그아웃이나 시스템종료를 수행하는 단축키를 만들어 보겠습니다. 

 

미리보기 동영상

 

 

부품목록

본 학습에는 총 5종류의 부품이 필요합니다.

NO    

부품명                                                                          수량      상세설명
1 아두이노 레오나르도 R3 1 아두이노
2 푸시 버튼 1 입력버튼
3 브레드보드 1 브레드보드
4 점퍼 케이블 2 점퍼 케이블

 

  레오나르도 브레드보드 점퍼케이블  푸시 버튼 
P
A
R
T
S

 X 1
 X 1 X 2 X 1

 

하드웨어 Making

회로도

브레드보드 레이아웃

소프트웨어 Coding

 

 

아래의 코드를 아두이노에 업로드 합니다.
*도구 > 보드 > 레오나르도로 보드 설정이 되어 있는지 확인합니다.

 

 

/*
출처 : www. arduino.cc
한글 주석 : www.kocoafab.cc

  키보드 로그아웃
 
 이 스케치는 키보드 라이브러리를 보여줍니다.
 
 2번핀이 그라운드에 연결되면, 로그아웃을 수행합니다.
 
 이것은 다음과 같이 키보드 조합을 사용하여 수행합니다.:
 
 On Windows, CTRL-ALT-DEL followed by ALT-l
 On Ubuntu, CTRL-ALT-DEL, and ENTER
 On OSX, CMD-SHIFT-q
 


 
 created 6 Mar 2012
 modified 27 Mar 2012
 by Tom Igoe
 
 This example is in the public domain
 
 http://www.arduino.cc/en/Tutorial/KeyboardLogout
 */
 
#define OSX 0 // OSX가 나타나면 0로 바꾸어라.:
#define WINDOWS 1 // WINODWS 가 나타나면 1로 바꾸어라.:
#define UBUNTU 2 // UBUNTU 가 나타나면 2로 바꾸어라.:

// 사용자 운영체제에 맞게 설정해주세요 ( 기본 WINDOWS):
int platform = WINDOWS;

void setup() {
  // 핀2를 입력하고 활성화 합니다. 
  pinMode(2, INPUT_PULLUP);
  Keyboard.begin();
}
 
void loop() {
  while (digitalRead(2) == HIGH) {
    //핀2가 로우가 될때까지 아무것도 수행하지 않습니다.
    delay(500);
  }
  delay(1000);

  switch (platform) {
  case OSX:
   Keyboard.press(KEY_LEFT_GUI);
   // Shift-Q 의 조합으로 로그아웃을 수행합니다. :
   Keyboard.press(KEY_LEFT_SHIFT); 
   Keyboard.press('Q');
    delay(100);
    Keyboard.releaseAll();
     // 엔터키를 입력합니다.:
    Keyboard.write(KEY_RETURN);  
    break;
  case WINDOWS:
    // CTRL-ALT-DEL 키의 조합으로 로그아웃을 수행합니다.:
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press(KEY_DELETE);
    delay(100);
    Keyboard.releaseAll();
    //ALT-s 키를 입력합니다.:
    delay(2000);
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press('l');
    Keyboard.releaseAll();
    break;
  case UBUNTU:
    // CTRL-ALT-DEL키의 조합으로 로그아웃을 수행합니다.:
    Keyboard.press(KEY_LEFT_CTRL);
    Keyboard.press(KEY_LEFT_ALT);
    Keyboard.press(KEY_DELETE);
    delay(1000);
    Keyboard.releaseAll();
    //로그아웃을 확인하기위해 엔터키를 입력을 수행합니다.:
    Keyboard.write(KEY_RETURN);
    break;
  }
  while(true);
}








소프트웨어 & 하드웨어 설명

 

#define OSX 0 // OSX가 나타나면 0로 바꾸어라.:
#define WINDOWS 1 // WINODWS 가 나타나면 1로 바꾸어라.:
#define UBUNTU 2 // UBUNTU 가 나타나면 2로 바꾸어라.:


#define 문은 코드에서 해당 조건을 찾아서 자동으로 바꾸어 주는 역할을 합니다.
여기서는 OSX 라는 단어가 나타나면 모두 숫자 0으로 바꾸라는 뜻입니다.

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

푸시버튼, 아두이노, 레오나르도

hihyo 2014-08-01 15:28:19

감사합니다.

수박쨈 2014-08-01 16:41:22

만드는데 시간이 얼마나 걸리셨나요??

jy 2014-08-01 16:48:05

원클릭이라

판다마니아 2014-08-01 17:22:19

많은 도움이 되었습니다. 감사합니다.