brunch

You can make anything
by writing

C.S.Lewis

by Cylogic Aug 31. 2020

24. 컴퓨터 키보드로 아두이노 조종하기

아두이노가 연결된 컴퓨터의 키보드로 아두이노의 장치들을 조종할 수 있다.

앞 강좌들에서 변수의 값을 확인하기 위하여 Serial.begin(),  Serial.println() 두 가지 명령어를 사용했었다.


USB 케이블로 연결되어 있는 아두이노와 컴퓨터는 시리얼 통신이 가능하다.

시리얼 포트를 통해서 아두이노에서 사용하는 변수들의 값을 컴퓨터로 전송해 주어 이를 확인할 수 있었던 것이 Serial.println()이다.


그렇다면 그 반대로 컴퓨터에서 아두이노로 특정 값을 던지고 이를 아두이노에서 받아서 그 반응을 보이는 것이 가능할까? 당연히 가능하고, 이번 강좌에서는 그 이야기를 해보려고 한다.


장난감을 만들어서 그 장난감을 조종하는 것을 컴퓨터로 하는 것이 가능하다는 것이다.


아주 간단한 회로를 구성해 보자.

첫 번째 장난감인 LED 가위 바위 보의 회로를 그대로 가져와 보자. 오른쪽에 있었던 버튼은 필요 없으므로 가렸다.


여러분이 장비와 조금 떨어진 컴퓨터 앞에 앉아서 여러분이 켜고 싶은 LED를 컴퓨터 키보드로 마음껏 조정하고 싶다고 하면 어떻게 해야 할까?

물리적으로 해결할 수 있는 방법은 스위치의 전선을 길게 연장하여 여러분의 손에 버튼을 쥐고 조종하는 것이 한 방법일 것이다. 그러나 여러분의 컴퓨터로도 얼마든지 이를 해결할 수 있다.


8,9,10번 핀에 LED가 연결되어 있고, 다른 장치는 아무것도 없다.


loop 함수의 시작을 보면 문자 변수 ch를 정의하고, ch에  Serial 포트에서 넘어오는 키보드 문자를 받아서 

그것이 어떤 문자인지에 따라 불을 켜거나 끄게 된다.


키보드에서 r, y, b, e 키를 눌러서 빨간 등(r), 노란 등(y), 파란 등(b)을 켜거나 아니면 모든 불을 끄는(e) 코드이다. 코드의 변수 명은 가위바위보의 그것을 그대로 사용했다.


Serial Monitor(시리얼 모니터, 또는 직렬 모니터)의 키보드 입력 위치에 커서를 두고 키보드를 눌러보면 해당 작업이 어떤 식으로 불을 켜는 지를 볼 수 있다.

코드 중 살펴볼 부분은 16, 17, 18 줄의 다음 내용이다.


if (Serial.available()){  // 만일 시리얼 통신이 연결되어 있다면

   ch=Serial.read();       // 한 개의 문자를 읽어라.

}


ch에 어떤 문자가 들어오느냐에 따라 아두이노 프로그램이 작동하게 된다.


if (ch=='r') digitalWrite(ledGA, HIGH); 

//ledGA에는 빨간 LED 가 연결되어 있으므로 빨간LED가 켜지게 된다.


동영상으로 확인해 보자.



컴퓨터의 키보드를 이용하여 아두이노 장난감을 조종하는 길이 생긴 것이다.

LED를 켜거나, 모터를 앞으로 또는 뒤로 돌리거나, 꼬리를 오른쪽 또는 왼쪽으로 돌리는 모든 작동이 여러분의 키보드 입력값에 따라 조종되게 된다.


지금까지는 보드에 연결되어 있는 스위치나 센서, USB 케이블이 연결된 컴퓨터가 여러분의 아두이노 장치를 조종하였다면, 앞으로는 무선조종장치, 휴대폰, TV 리모컨과 같은 장치로 여러분이 만든 장난감을 조종하는 방법을 배우게 될 것이다. 기대하시라 ^^

매거진의 이전글 23. 다섯 번째 장난감 : 비눗방울 발생기 만들기

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari