아두이노 라는 PC에서 간단하게 접속해 프로그래밍해서 동작시키는 마이컴 보드가 있습니다. 이걸 얼마전 구입했는데 통상은 외부의 스위치나 이런것을 브레드 보드라는 실험용 보드로 이리저리 연결해가며 만들어야 합니다.
이렇게 생긴 것인데 복잡하긴 합니다. 문제는 집이면 몰라도 가지고 다니면서 간단한 실험하기에는 저 브레드 보드는 너무 거추장 스럽습니다. 그냥 버튼하나 눌렀을때 특정 동작만 해주는 정도의 간단한 실험용으로는 부적합합니다.

현재는 스위치 하나와 LED하나로 동작합니다. 키배열 임의로 바꿀수 있고 매크로기능이 있는 소형 조이스틱을 만들려고 하는데 해당 스위치류는 나중에 추가 땜질해야지요.
const int buttonPin = 8; // 8번핀을 버튼 스위치신호 입력으로 지정
const int ledPin = 13; // 13번 핀을 동작 확인용 LED신호 출력으로 지정
int previousButtonState = HIGH; // 반복시 이전의 버튼 상태 기본값은 눌림(HIGH는 스위치가 연결되 전압이 높다는 의미)
int counter = 0; // 버튼이 몇번 눌렸는기 기억하는 변수
void setup() {
// 위에서 설정한 핀번호를 입력대기 지정:
pinMode(buttonPin, INPUT);
// 아두이노를 키보드 모드로 동작:
Keyboard.begin();
}
void loop() {
// 버튼 상태 읽기:
int buttonState = digitalRead(buttonPin);
// if the button state has changed,
if (


그래서 용산에서 작은 기판과 저항 스위치등을 몇개 구해다 테스트용 기판을 만들기로 했습니다. 저 기판 하나에 2400원인가 하더군요. 스위치는 개당 10원 저항은 10개 100원정도입니다. 스타터 킷이니 살필요 없이 적당히 부품상에서 구입하기를 권합니다.


아두이노는 기존 아두이노 위에 이런 소형기판을 만들어 붙이기 쉬운 구조로 되있고 이런 소형기판을 실드라는 이름으로 부릅니다. 꼭 방패처럼 기존 기판위에 올라갑니다.


이 아두이노 레오나르도라는 물건이 참 마음에 듭니다. 키보드나 마우스로 동작하는 기능이 추가되서 십수만원이 넘는 매크로 있는 키보드나 마우스를 대체 가능하군요. 프로그래밍이 가능하다 보니 몇초뒤 무슨동작후 어떤 키를 넣으라는 식으로도 가능합니다.
프로그래밍 예제를 하나 올려보면 다음처럼 가능합니다.
const int buttonPin = 8; // 8번핀을 버튼 스위치신호 입력으로 지정
const int ledPin = 13; // 13번 핀을 동작 확인용 LED신호 출력으로 지정
int previousButtonState = HIGH; // 반복시 이전의 버튼 상태 기본값은 눌림(HIGH는 스위치가 연결되 전압이 높다는 의미)
int counter = 0; // 버튼이 몇번 눌렸는기 기억하는 변수
void setup() {
// 위에서 설정한 핀번호를 입력대기 지정:
pinMode(buttonPin, INPUT);
// 아두이노를 키보드 모드로 동작:
Keyboard.begin();
}
void loop() {
// 버튼 상태 읽기:
int buttonState = digitalRead(buttonPin);
// if the button state has changed,
if (
(buttonState != previousButtonState) // 이전과 버튼 상태가 다르고(이래야 버튼이 눌리고 한번만 동작):
&& (buttonState == HIGH) // 버튼이 눌린경우만 아래를 실행
)
{
counter++;
// 다음 메세지를 키보드로 입력 (게임등에서는 특정 키를 누른것으로 임의대로 구성가능 그러면 그것이 매크로!!!)
Keyboard.print("You pressed the button ");
Keyboard.print(counter);
Keyboard.print(" times.");
// 가령 S키 + D키 + S키 + D키 + P키 하는 식으로 승룔권 커맨드도 가능합니다. 중간에 약간의 딜레이를 넣어야 겠지요.
}
// 키보드 상태 저장 이러면 키보드를 누르고 있어도 재입력안됨
previousButtonState = buttonState;
digitalWrite(ledPin, HIGH); // 작동확인을 위해 LED를 0.1초 단위로 깜빡임
delay(100); //
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(100);
}
물론 아주 복잡하게는 이 보드를 통해 센서입력을 받아 특정동작을 하거나 이걸로 모터등을 동작시키고 무선인터넷등도 가능한데 이정도 까지는 좀더 많은 연습을 해야할듯 합니다. 그래도 실용적인 용도로 목표를 삼아 뭔가 만들어 나가는 재미가 있으니 좋습니다. ^^
P.S 시한폭탄 제조용으로 악용의 소지도 높아 보입니다. ^^;
P.S2
새로 나온 신간인데 아주 상세하게 잘나왔더군요. PC와의 연동이나 모터구동등 상당히 높은 수준까지 잘 설명된 책입니다.
응용의 여지가 높을수록 의욕을 높인다는 점에서 이런 중상급 서적을 추천하겠습니다.

덧글
ㅅㅎㅍㅌ 이란 단어는 ;;; 주의하시는게.... 웃자고 쓴 이야기 죽자고 단속할 인간들이 있습니다;;;;
특히 이명박근혜 회동에서 대선전에 '클린 100일'을 만들자는 무슨 계엄령 스러운 논의가 오고가는 걸 보면서 소름이 끼쳤습니다.
인터넷 장악의 만행을 부릴 준비라도 하는 것인지;;;;(기우에 그치길 바랍니다)
응용 범위가 넓을수록 의지가 타오르기 쉽다는 말씀 공감합니다.^^ 기대됩니다
또 각종 센서류와 결합해도 쓸곳이 많습니다.
손 뗀지 오래되서 가물가물하네요. 여튼 아두이노는 다룰줄만 알면 참 재미있는 물건 같습니다. 다룰줄 몰라서 문제지.
근데 저는 지난학기 텀프할때 우노를 썻는데 우노랑 레오나르도랑 차이가 뭐가있나요?
이걸로 앵그리버드용 조준장치 만든분도 있더군요.