부저와 LED를 이용한 장난감 + 함수 만들기
오늘 만들 장난감은 4개의 LED가 한 개에서 열개까지 순서대로 켜지면 이를 기억하고 LED에 해당하는 버튼을 순서대로 누르면 성공하는 장난감이다.
성공하면 성공에 해당하는 불빛과 음악이 나오고 실패하면 실패에 해당하는 불빛과 음악이 나오게 된다.
이해를 돕기 위해 실제 장난감으로 게임하는 동영상을 미리 보고 시작하자.
동영상을 보면 이해가 가시겠지만, 아두이노가 임의의 LED 램프를 하나씩 추가하여 켜고 게임 플레이어는 이를 따라 해야 한다. 10개의 불이 켜질 때까지 따라 하면 성공이고, 그 이하에서 순서를 틀리면 게임이 다시 시작하게 된다. 이 게임을 차후에 LCD 디스플레이에서 그 성공, 실패의 전적들을 보여주는 추가 기능을 넣을 것이므로 잘 살펴보고 만들어 보면 좋을 것이다.
작은 만능 기판에 부품을 콤팩트 하게 넣고 3D 프린터로 케이스를 만드는 작업까지를 차후에 보여줄 예정이다.
이 장난감은 회로를 꾸미고 만드는 것은 어렵지 않으나 게임 구동을 위한 알고리즘(계산 또는 실행의 방법)이 초보자에게 쉬운 내용이 아니다. 그래서 하나의 장난감을 몇 회에 나누어 설명하도록 하겠다.
먼저 이번 시간에는 회로를 설계해 보자.
우리에게 필요한 부품은
아두이노와 브레드 보드
패시브 부저
LED 4개 그리고 그에 연결된 220옴 저항 4개
버튼스위치 4개
연결을 위한 전선
이상이다.
회로는 간단히 꾸며지지만 코딩은 쉽지 않다.
기능을 많이 넣어야 하기 때문이다.
하나씩 분리해서 코딩을 이해하는 방법은 각각의 기능을 하나의 함수로 분리하는 방법이다.
이번 장난감을 만들면서는 함수를 만들어가는 과정을 함께 공부하게 된다.
제일 먼저 연결된 각 부붐이 입력부 인지 출력 부 인지를 정의해 줘야 한다. 각 변수의 의미를 한글 번역본(^^)으로 함께 첨부한다.
프로그램을 잘하려면 데이터에 대한 정의를 잘해야 한다.
그래서 자료 구조론(data structure)을 가장 중요한 프로그램 공부의 기초 과목으로 꼽는다.
이 프로그램에서 그리 대단한 자료 구조가 나오지는 않지만, 같은 종류의 데이터를 같은 형식의 변수에 정의하는 작업을 하는 것이 몹시 중요한 것이라는 것을 알려주고 싶다.
LED, 스위치, 음 주파수, LED 켜지는 순서 등 모든 것을 하나의 자료 구조 안으로 집어넣는 방법이 바로 하나의 배열에서 이를 정의해 주는 것이다. 더 자세한 내용은 코딩 관련 자료에서 좀 더 자세히 설명하겠다.
어찌 되었건 회로에 구성된 부품 관련 정의를 setup() 함수를 통하여 끝냈다.
구성된 회로와 하나씩 비교해 보면 그 의미를 알 수 있을 것이다.