아두이노 코딩을 위해서 C 또는 C++ 프로그램의 구조와 형식을 모두 이해할 필요는 없다.
더욱이 본 강좌는 단순한 동작을 처리하여 장난감을 만드는 강좌이므로 깊이 있는 문법이나 기법을 배워야 할 필요는 없다.
대부분의 프로그램은 앞서 연재한 "재미로 읽는 코딩 수업"에서 이야기한 것처럼 대입, 반복, 비교의 세 가지 기본 기능만을 배우면 만들 수 있다.
그에 앞서 아두이노와 C 프로그램이 가지는 기본적인 구조를 설명하고 다음 과정으로 넘어가려 한다.
모든 아두이노 프로그램은 setup과 loop 두 가지 함수를 가진다.
setup은 프로그램이 시작하기 이전에 준비해야 할 사항을 정의하는 부분이므로 1회만 수행되고
loop은 실제 프로그램을 진행하는 부분으로 별도의 정지 명령이 없는 한 끊임없이 반복되는 부분이다.
setup과 loop앞의 void는 각 함수의 결괏값이 없이 수행되는 함수임을 표시하고, 각 함수는 {} 괄호로 감싸여 있다.
// 는 설명(주석)을 넣기 위한 표시로 이 표시가 나온 이후의 내용은 프로그램 제작 시 메모처럼 사용된다.
이제 앞선 이야기에 나온 코드를 보자
pinMode(13, OUTPUT); 은 디지털 핀 13번을 데이터를 내보내는(출력) 핀으로 사용하겠다고 선언하는 부분이다.
만일 디지털 10번 핀을 데이터를 받아들이는 핀으로 사용하겠다고 하면 pinMode(10, INPUT); 와 같이 선언하는 문장을 넣었을 것이다.
여러 개의 핀을 선언할 경우 줄을 바꿔가며 이를 모두 이곳에 선언하면 된다.
단순히 input output 만이 아니라 차후에 배울 많은 선언들을 이곳에 작성하여야 한다.
지금 디지털 13번에는 아무런 부품이 연결되어 있지 않지만, 보드 위의 L 표시가 된 LED 램프가 이를 대신하게 된다.
줄 마지막에 넣은 ; 표시는 하나의 명령 줄의 끝을 표시한다.
digitalWrite(13, OUTPUT); 은 setup에서 출력 핀으로 선언된 디지털 13번 핀에 전기 신호 HIGH (전압 5V)를 내보낸다는 뜻이다. 아까 램프가 13번에 연결되어 있으므로 램프를 켜라는 명령인 것이다.
그 아래 있는
digitalWrite(13, INPUT); 은 그 반대로 13번 핀에 전기 신호 LOW(전압 0 V)를 내보내라는 뜻이다. 즉 불을 끄라는 명령인 것이다.
delay(1000);은 1초를 아무 동작도 하지 말라는 것이다. 즉 delay안의 1은 1/1000 초를 의미한다.
이제 전체 프로그램을 익숙한 한국어로 번역해 보면 이런 내용이다.
붉은색이 한국어 번역본이다.
프로그램을 동작시키면 LED가 1초간 켜지고 1초간 꺼지고를 반복 수행한다.
다음 시간에는 배운 내용을 응용하여 단순한 변화를 만들어 보자.