덩치가 좀 있는 프로젝트를 한다면 프로그래밍 할 때 기능별로 클래스 또는 파일로 구분해서 제작을 합니다. 그런데 아두이노로 프로젝트 할 때에는 하나의 ino(또는 pde) 파일안에 모든 내용이 다 들어가 있는 경우가 많죠. 아두이노에 그리 복잡한 코드를 올리는 경우가 개인 사용자에게는 드물기도 하거니와 파일로 구분되면 전역변수 등 고려해야 할 내용들이 늘어나서 귀찮아지죠.

하지만 상당히 긴 코드가 하나의 파일에 들어가면 가독성이 떨어지는 것은 사실입니다. 가뜩이나 아두이노 에디터가 보기 불편한데 가독성도 떨어지면 코드 분석하기가 어렵죠. 아두이노에서는 tab 을 이용해서 이런 불편을 해소할 수 있습니다.

아두이노에서 tab은 일반적인 c-java 프로그래밍에서 파일과는 개념이 틀립니다. 단순히 하나의 파일에 있는 내용을 몇 개의 파일로 나누어 놓고 컴파일 할 때는 하나로 합쳐서 사용합니다. 아래 예제를 보시면 이해가 되실겁니다.

tab 생성 및 테스트

일단 아두이노 IDE를 실행하시고 [파일 – 다른 이름으로 저장…] 을 클릭해서 tab_test 이름으로 저장합니다. 그럼 tab_test 폴더가 생기고 그 안에 tab_test.ino 파일이 생길겁니다. tab_test.ino 파일은 아두이노의 기본 구조인 setup(), loop() 함수가 기본으로 생성되어 있습니다. 이제 이걸 탭을 이용해서 나누어 보겠습니다.

아래와 같이 탭 영역의 [아래방향 화살표]를 클릭하면 탭을 추가할 수 있습니다. 새 탭의 이름은 tab_main 으로 합니다.

tab_test

그럼 탭이 하나가 추가될 것입니다. 프로젝트 폴더에 가보시면 tab_main.ino 파일이 생성된 것도 확인하실 수 있습니다. 이제 tab_test.ino 파일에 있던 loop() 함수를 잘라내서 tab_main 으로 옮겨봅니다.

tab_main

tab_test 에는 setup() 함수가 있고, tab_main 에는 loop() 함수가 있는 상태입니다. 이 상태에서 컴파일 버튼을 누르면 정상적으로 컴파일이 됩니다.

하나 더 실험해 보시죠. tab_test 에서 전역변수를 선언하고, tab_main 에서 그 변수를 사용하도록 작성한 다음 컴파일 해보세요. 별 문제없이 컴파일이 될겁니다.

즉, 아두이노에서 tab 은(그리고 프로젝트 폴더안에 있는 ino 파일들은) 단순히 하나의 파일을 보기좋게 나눠둔 것이고 컴파일 할 때는 하나로 이어져서 컴파일 됩니다.

주의하실 점은 전역변수 선언이나 헤더파일 include, define 구문 등은 모두 main 함수안에 위치시키는 것이 좋습니다. 코드의 가독성을 위해서이기도 하고, 예상치 못한 에러를 발생할 가능성이 있다고 합니다.