아두이노 소스코드 에서 사용하는 용어들의 의미는 뭘까?

아두이노를 배우기 위해 예제를 따라해보거나 공부를 막상 시작하면 크나큰 걸림돌을 만나게됩니다.


 


바로 이놈 아두이노의 소스코드입니다.


전선이 연결되고 LED가 켜지는 확고히 눈에 보이는 무언가는 감을 쉽게 잡을 수 있겠지만 친숙하지도 않은 영어로 길게 쓰여있는 것을 보면 갑자기 눈앞이 막막해집니다.


단순히 이게 프로그래밍 코드입니다. 라고만 설명해주면 배경지식이 없는 상태에서 이해하기에 많은 어려움이 있을 것입니다.


간단한 배경 지식을 다루기 앞서 제 개인적인 의견으로는 백문이 불여일견 아무리 글로 설명이 길게 되었다 한들 직접 실행하고 손에 익히고 머리에 익히는 것이 가장 쉽습니다. 다음의 설명을 읽고 바로 이해가 가지 않더라도 예제를 따라해보면 자동으로 이해가 될것입니다.


그럼 기본적인 배경 지식을 다루어 보도록 하겠습니다.


컴퓨터, 프로그램, 프로그래밍, 프로그래밍언어 ← 이것들이 오늘 알아볼 배경 키워드 들입니다.


컴퓨터 : 컴퓨터는 넓은 범위로는 우리들이 지금 예제를 보고있는 데스트톱 PC 나 스마트폰 뿐만 아니라 아두이노와 같이 전기를 이용해서 특정한 논리적 수리적 연산을 처리하는 장치라고 볼수 있습니다. 네 심지어 계산기도 컴퓨터라 부를만합니다.


프로그램 : 저희가 보는 인터넷 창도 프로그램이고 계산기에서 버튼을 누르면 계산해주는 것또한 프로그램입니다. 즉 컴퓨터의 논리적, 수리적 연산을 저희가 필요한 목적에 맞게 구성된것을 프로그램이라고 부를 수있습니다.


프로그래밍 언어 : 프로그램을 작성하기위해 연산이나 동작등을 명령어로 명시하고 작성규칙을 정리해둔것을 프로그래밍 언어라고 합니다. 프로그래밍 언어는 다양한 종류가 있지만 아두이노에서는 C++이라는 언어를 사용합니다. 그렇다고 아두이노를 시작하겠다고 C++ 을 따로 공부할 필요는 없습니다.


프로그래밍 : 프로그래밍 언어로 저희 목적에 맞게 명령어를 이어붙이고 구조를 짜주는 작업을 뜻합니다.


그럼 다시 아두이노의 소스코드를 본다면 각각의 단어들이 무언가 의미를 가지며 무었인가 명령어 라는 개념으로 동작한다는 것으로 이해 할 수 있을 것입니다.


void setup() {

  pinMode(LED_BUILTIN, OUTPUT);

}


이부분을 보면 띄어쓰기나 줄바꿈을 통해 단어들이 구분되어있는데 이러한 단어 하나하나를 '토큰' 이라고 부릅니다.

void 도 토큰이고 setup() 또한 토큰이고 pinMode 도 토큰이고 LED_BUILTIN 등등...


토큰은 프로그램을 구성하는 최소 단위로 이것이 명령어를 의미하거나 어떠한 값을 의미합니다.


void 는 사전의미 그대로 '비었음' 이라는 값을 의미합니다. 왜 뜬금없이 비우고 시작하냐 생각한다면 그 궁금증을 유지한 체로 다음으로 계속 읽어주시면 다른 명령어들을 소개하면서 설명이 됩니다.


setup, pinMode 는 함수라고 불리는 명령어로 () 안에 들어가는 값은 명령을 실행할때 참고하는 목적의 입력값이 됩니다. 다만 둘은 큰차이가 있습니다. setup은 이자리에서 저희가 만들고 있는 명령어 이며, pinMode는 이미 아두이노에서 만들어진 명령어 입니다.


그래서 setup은 {} 안에 다른 명령어가 들어가 새로운 명령어를 만들고 있고 입력을 받거나 출력을 어떻게 할지에 대해 설정을 해줍니다. void setup() 로 앞은 void(비었음) 뒤는 그냥 괄호안이 비어있습니다. 즉 명령어의 설정은 입력을 받거나 반환하는게 없다는 뜻이 됩니다.


만들어진 명령어인 pinMode의 끝에는 세미콜론(;) 이 붙어있는데 이는 C언어의 규칙으로 만들어진 명령을 사용할때는 항상 세미콜론(;)으로 종료 하는 것이 규칙입니다.


setup과 loop는 아두이노에서 흐름에 맞는 동작을 하기 위한 가장 직본적인 요소입니다. setup은 이름그대로 '설정'을 하는 역할을 가지고 loop 또한 '반복'이라는 역할을 가집니다. LED를 깜빡이는 부분은 계속 반복이 되기때문에 loop명령에 집어넣어주고 LED를 어느 핀에서 사용할 것인지는 처음에 한번만 동작시켜주면 되기때문에 setup에 들어가게 되는 것이지요


오늘 문의가 들어온 김에 한번 정리 해 보았습니다. 좀더 궁금한 내용이 있으면 덧글로 달아주세요

단순한 설명을 위해 약간 왜곡되어서 표현한 부분이 있습니다. 관련해서 수정하였으면 하는 부분이 있다면 해당내용에 대해서 덧글을 달아주시면 감사하겠습니다.


감사합니다.


출처 : www.mechasolution.com




메카리워즈 Image Map


모바일 버전으로 보기