[아두이노야 놀자]<7>E-센서보드와 4색 버튼

아두이노를 배우고 싶은데 센서 종류는 너무 다양합니다. 멋진 프로젝트를 만들기 위해 필요한 센서가 모아져 있다면 얼마나 편리할까요. '엔트리 센서보드'가 존재하는 이유입니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

E-센서보드(엔트리 센서보드)는 아두이노를 활용한 프로젝트를 재미있고 쉽게 만들도록 도와줍니다. 이번 시간에는 E-센서보드에서 가장 눈길을 끄는 4개 버튼으로 '사이먼 게임(Simon game)'을 만들어 보겠습니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

사이먼 게임은 네 개 버튼으로 플레이하는 기억력 게임입니다. 버튼에 불빛이 순서대로 들어오면 같은 순서로 눌러야 하는데 성공할 때마다 이전 단계에 이어 횟수가 하나씩 추가됩니다. 게임이 지속될수록 많은 횟수를 기억해야 합니다.

준비물은 아두이노(UNO)와 USB 케이블, E-센서보드가 필요합니다. 아두이노 보드와 센서보드를 꾹 눌러서 완전히 결합되게 해주면 됩니다. 그리고 엔트리 하드웨어 연결 프로그램에서 'E-센서보드(유선연결)'로 연결해야 합니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

먼저 [그림1]처럼 게임에 필요한 변수 두 개(입력, 횟수)와 리스트(버튼순서), 신호(마이턴)를 추가합니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림2]처럼 E-센서보드 LED를 끄고 켜는 함수를 만듭니다. 첫 번째 입력한 번호에 맞는 LED를 켜고, 두 번째 입력한 수만큼 기다렸다가 LED를 끕니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림3]처럼 빨강, 파랑, 노랑, 초록 네 가지 중 무작위 하나를 순서에 추가합니다. 그리고 '횟수' 변수를 0으로 초기화합니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼
[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림4]처럼 방금 만든 함수를 이용해 사용자가 어떤 버튼을 어떤 순서로 눌러야 하는지 보여줍니다. 너무 빠르지 않게 0.4초마다 순서대로 보여주고 모든 순서만큼 반복하면(순서를 모두 보여주면) 신호를 보내고 기다립니다. 사용자가 버튼을 순서대로 모두 입력할 때까지 기다리기 위해서 입니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림5]처럼 어떤 버튼을 눌렀는지 하나하나 비교하면 너무 복잡해집니다. 그래서 미리 어떤 버튼을 눌렀는지 '입력' 변수에 저장해놓겠습니다. 아무것도 누르지 않았다면 0으로 정합니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림6]처럼 사용자가 입력할 때에도 순서에 맞게 입력했는지 확인하도록 '횟수' 변수를 사용합니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림7]처럼 먼저 '입력' 변수가 0이 아닐 때까지 버튼을 눌렀을 때 아래 명령을 실행합니다. 사용자가 누른 버튼과 눌러야 하는 버튼이 일치하면 해당 색의 빛을 0.2초간 켭니다. 사용자가 버튼에서 손을 뗄 때까지 기다립니다. 계속 누르고 있어도 다시 눌렀다고 인식하면 안 됩니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

[그림8]처럼 만일 사용자가 잘못된 버튼을 눌렀다면 모든 색의 LED를 켜서 실패했다는 것을 알려줍니다. 모든 코드를 멈춰 게임을 끝냅니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

버튼을 완벽하게 순서대로 눌렀다면 헷갈리지 않기 위해 [그림9]처럼 0.4초 정도 더 기다렸다가 명령을 끝냅니다. '마이턴' 신호가 끝나면 '신호 기다리기'도 끝나서 다시 문제를 보여줍니다.

[아두이노야 놀자]<7>E-센서보드와 4색 버튼

게임을 더 어렵게 만들어보세요. 단계가 오르면 처음 순서부터 모두 무작위로 바꿔봅시다. 기존보다 많이 어려워지겠지만 완벽하게 맞추는 사람을 위해 글상자로 점수를 표시해 주는 건 어떨까요?

도움말=김지원 네이버커넥트재단 연구원

위방향 화살표