초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

아두이노 Leonardo-키보드 컨트롤-메시지 전송

2014-08-01 11:27:29

개요

 

 

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

이 예제에서는 버튼을 눌렀을때, 키보드 입력으로 문자열을 컴퓨터에 전송하고
아두이노는  문자열 버튼을 누른 횟수를 보고하게 됩니다.




출처 : 계수기 - officesane

 

이는 일상 생활에서 물건이나 사람의 수를 셀 때 쓰는 계수기와 유사합니다.
본 예제를 통해 counter()함수에 대해 익히고 LCD를 결합하여
디지털 계수기를 만들수도 있습니다.

레오나르도(Leonardo)를 이용하여 프로그래밍과 배선 연결을 한뒤, 텍스트 편집기를 열고 버튼을 눌러주세요.

주의: Keyboard.print () 명령을 사용하면, 아두이노가 컴퓨터의 키보드를 점유하게 됩니다.
이 함수는 스케치를 실행하는 동안, 키보드의 제어를 잃지 않으려면, Keyboard.print ()명령을 호출하기 전에 확인시길 바랍니다.



 

 

 

 

미리보기 동영상

 

 

 

 

 

 

부품목록

 

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

NO 

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

 

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

X 5
 
X 1  X 1  X 4 X 1

 

 

 

 

 

하드웨어 making

 

브레드보드

 

전자 회로도


 

소프트웨어 coding

 

*도구 > 보드 > 레오나르도로 보드 설정이 되어있는지 확인합니다.

 

// Keyboard - Version: Latest 
#include <Keyboard.h>

/*
 제목		: 키보드 컨트롤 / 메세지 전송
 내용		: 아두이노 레오나르도를 이용하여, 푸시버튼이 눌린 횟수를 카운트 해봅시다.
 */

// 키보드 메세지 테스트 
// 아두이노 레오나르도, 마이크로, 듀 전용 예제입니다.
// 버튼을 누르면, 누른 횟수를 키보드 메세지로 전송합니다.

// 푸시 버튼을 디지털 4번 핀에 연결합니다.
const int buttonPin = 4; 
// 푸시 버튼의 현재 상태를 확인합니다.
int previousButtonState = HIGH;
// 버튼이 눌린 횟수를 저장할 변수를 선언합니다.
int counter = 0;      


// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
void setup() {
	// 푸시버튼의 핀(4번)을 입력으로 설정합니다.
	pinMode(buttonPin, INPUT);
	// 키보드 설정을 제어합니다.:
	Keyboard.begin();
}

// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행합니다.
void loop() {
	// 푸시 버튼의 상태를 읽습니다.
	int buttonState = digitalRead(buttonPin);
	// 만약 버튼 상태가 변경된 경우 그리고 현재 버튼을 누를때:
	if ((buttonState != previousButtonState) && (buttonState == HIGH)) {
		// 버튼 카운터를 증가합니다.
		counter++;
		// 다음 메세지를 입력합니다.
		Keyboard.print("You pressed the button ");
		Keyboard.print(counter); 
		Keyboard.println(" times.");
		// 다음 버튼의 변경상태를 위해 현재 버튼의 상태를 저장합니다.
		previousButtonState = buttonState;
	}
}

 

 

 

 

 

 

 

kocoafabeditor

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

키보드 컨트롤, push button, 아두이노