삼촌을 위한 빠른 아두이노 튜토리얼 - 3 (기본 문법 및 시리얼 통신)

세미콜론(;) : 한 줄의 코드가 끝남을 의미하며 코드끼리의 구분을 가능하게 한다. 즉, 일반 언어의 마침표에 해당하는 역할.
없으면 컴퓨터(컴파일러)는 코드가 끝났음을 인지하지 못하고 오류가 날 가능성이 높다.
엔터와 탭은 가독성을 위한 것으로 아무 역할이 없다. 위 코드를 한 줄로 쭉 이어놔도 세미콜론만 제대로 타이핑했다면 컴파일이 가능하다. 하지만 코드는 타인(미래의 나 포함)이 본다는 것을 전제로 작성하는 게 좋으므로 일반적으로 통용되는 규칙에 맞게 작성하는 것이 바람직하다.

코드와 관련해서 단순 설명하고자 하는 내용을 적고 싶다면 주석을 사용한다.
보통 어떤 코드가 어떤 기능인지 간단히 메모할 때 사용한다.
주석처리된 문구는 컴파일에 영향을 미치지 않는다.
// 는 오른쪽으로 이어지는 한 줄을 주석처리하고,
/* */ 는 두 기호 사이의 모든 내용을 주석처리한다.
주석도 타인(미래의 나 포함)을 위한 것

시리얼 통신: 우리말로 하면 직렬 통신. 한 통신 선에서 데이터를 한 조각씩 순차적으로 보내거나 받는 방식
아두이노는 시리얼 통신을 컴퓨터와 할 수도 있고, 다른 아두이노와 할 수도 있다.
컴퓨터와 할 때는 USB선을 통해서 데이터를 주고받지만, 다른 아두이노와 할 때는 핀 번호 0번과 1번을 사용한다.
컴퓨터와 연결한 뒤 시리얼 모니터를 통해 어떤 추가 장치 없이도 출력 값을 확인할 수 있다. 이를 통해 데이터 값 모니터링과 같은 기능을 수행할 수 있다.

void setup() {
Serial.begin(9600);
// 시리얼 통신(Serial)을 9600의 속도로 시작(begin)한다.
// 통신 속도는 여러 값이 있지만 보통 9600으로 씀.
// 통신 시작은 한 번만 하면 되니까 setup 함수 안에 위치
}
void loop() {
Serial.println("Hello Coding Array Kit ~!");
// 시리얼 통신(Serial)을 통해 괄호 안의 값을 한 라인(ln/line) 출력(print)하도록 한다.
// 문자를 출력하고 싶으면 ""안에 넣어서 입력. 숫자는 그냥 입력.
// 괄호 안의 값을 다 출력했으면 엔터를 자동으로 출력한다.
// 괄호 앞에 Serial.print로 대신 쓰면 엔터를 출력하지 않는다.
delay(1000);
// 1000ms, 즉 1초 동안 기다린다(delay).
// 해당 시간이 지난 후 아래 코드로 넘어간다.
// 현재 코드에선 아래에 코드가 없으므로 loop함수의 처음으로 돌아가서
// Serial.println을 다시 실행한다.
}
* 코딩은 대소문자를 구분하므로 오타에 주의한다.

위 두 방법으로 시리얼 모니터를 열 수 있다.

열면 위와 같이 println 한 값이 1초마다 출력되는 것을 확인할 수 있다.
이때 오른쪽 아래 "9600 보드레이트"라고 써진 부분에서 숫자를 Serial.begin(9600)에서 설정한 속도 값과 똑같이 맞추어야 출력이 제대로 나온다.
데이터를 보내는 속도와 받는 속도의 합이 맞아야 하기 때문