C 언어 - 아두이노 시작하기

 프로그래밍은 프로그래밍 언어의 명령을 모아 놓아 원하는 기능 혹은 동작을 하도록 하는 것입니다. 아두이노에서는 코드 혹은 명령을 모아 놓은 것을 스케치라고 합니다. 아두이노를 프로그래밍할 때 사용하는 C언어에 대해 알아보겠습니다.

digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);

함수

이 명령들은 작성된 순서대로 위에서 아래로 실행됩니다. 첫 번째 줄에서는 13번 핀의 출력을 HIGH로 설정합니다. 13번 핀에는 아두이노 보드에 있는 LED와 연결되어 있으므로 이 명령이 실행되면 LED가 켜지게 됩니다. 다음 두 번째 줄에서 500밀리 초 동안 대기한 후 세 번째 줄에서 13번을의 출력을 LOW로 설정해서 LED가 다시 꺼집니다.

위 코드를 살펴보면 알 수 있듯이 함수 이름을 지정할 때는 공백이 포함되지 않은 한 단어로 된 이름을 사용해야 합니다. digitalWrite는 아두이노 보드의 출력 핀을 설정하는 내장 함수입니다. 내장함수는 아두이노에 포함되어 있는 함수를 말합니다.
함수 이름은 대소문자를 구별한다는 점도 기억해야 합니다. digitalWirte로 써야지 DigitalWrite로 쓰면 안됩니다. digitalWrite 함수는 wiring_digital.c에 정의되어 있습니다.

void digitalWrite(uint8_t pin, uint8_t val)
digitalWrite 함수를 사용할 때는 설정할 핀 번호(uint8_t pin)와 핀 상태(uint8_t val)를 지정해 주어야 합니다. 이 두 가지 정보를 '인수'라고 합니다. 인수는 함수가 호출될 때 함수에 전달되는 값을 의미합니다.
함수의 매개변수들은 전체가 괄호로 묶여야 하고, 괄호 안에 있는 각 매개변수는 쉼표(,)로 구분지어야 합니다. 함수의 인수가 하나일 경우에는 쉼표가 필요없습니다.
각 줄은 세미콜론(;)으로 끝나야 합니다. 세미콜론은 한 명령의 끝을 표시합니다.
uint8_t는 unsingned int로 8bit로 된 데이터 타입으로 선언하는 것입니다. unsigned int는 부호가 없는 정수라는 의미입니다.

변수

C 언어에서 변수를 정의하려면 변수의 타입을 지정해 주어야 합니다. C 언어에서는 정수를 int라고 부릅니다. 13이라는 정수를 가진 ledPin이라는 변수는 다음과 같이 정의합니다.


int ledPin = 13;
변수는 이름 안에 공백이 없어야 합니다. 변수는 표기할 때 여러가지 방법이 있는데 소문자로 시작해서 뒤이어 나오는 단어는 대문자로 시작하는 명명규칙을 '카멜표기법'이라고 합니다.

컴파일

아두이노 IDE의 업로드 버튼을 누르면, 내부적으로 수행되는 일련의 작업이 진행됩니다. 첫 번째 단계는 컴파일 작업입니다. 컴파일은 사용자가 작성한 C 언어 코드를 MCU가 이해할 수 있는 바이너리 코드로 변환하는 것입니다. 컴파일하면서 C 언어 컴파일러가 사용자가 작성한 코드를 C 언어의 규칙에 맞게 작성했는지 확인합니다. 코드가 C 언어의 규칙에 맞지 않게 작성되지 않았으면 Error를 발생시켜 사용자에게 알려줍니다.
아두이노 IDE를 처음 실행하게 되면 다음과 같은 코드가 포함된 스케치 파일(ino)이 보입니다.

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
setup 함수와 loop 함수는 아두이노 스케치에 반드시 포함되어 있어야 하는데 아두이노 스케치에 반드시 필요한 특정 형식의 코드로 보일러플레이트(boilerplate) 코드라고 합니다. 두 함수 이름 앞에는 void라는 키워드를 사용하는데 리턴 값이 없는 함수라는 것을 알려줍니다.

C언어에 대한 내용은 내용이 방대하여 추가적인 계속 업데이트할 계획입니다.