아두이노

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

쓰루 2021. 6. 16. 16:49

세미콜론(;) : 한 줄의 코드가 끝남을 의미하며 코드끼리의 구분을 가능하게 한다. 즉, 일반 언어의 마침표에 해당하는 역할.

없으면 컴퓨터(컴파일러)는 코드가 끝났음을 인지하지 못하고 오류가 날 가능성이 높다.

 

엔터와 탭은 가독성을 위한 것으로 아무 역할이 없다. 위 코드를 한 줄로 쭉 이어놔도 세미콜론만 제대로 타이핑했다면 컴파일이 가능하다. 하지만 코드는 타인(미래의 나 포함)이 본다는 것을 전제로 작성하는 게 좋으므로 일반적으로 통용되는 규칙에 맞게 작성하는 것이 바람직하다.

 

 

 

코드와 관련해서 단순 설명하고자 하는 내용을 적고 싶다면 주석을 사용한다.

보통 어떤 코드가 어떤 기능인지 간단히 메모할 때 사용한다.

주석처리된 문구는 컴파일에 영향을 미치지 않는다.

 

// 는 오른쪽으로 이어지는 한 줄을 주석처리하고,

/*    */ 는 두 기호 사이의 모든 내용을 주석처리한다.

 

주석도 타인(미래의 나 포함)을 위한 것

 


 

병렬 통신(좌)과 직렬 통신(우) 묘사

시리얼 통신: 우리말로 하면 직렬 통신. 한 통신 선에서 데이터를 한 조각씩 순차적으로 보내거나 받는 방식

 

아두이노는 시리얼 통신을 컴퓨터와 할 수도 있고, 다른 아두이노와 할 수도 있다.

컴퓨터와 할 때는 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)에서 설정한 속도 값과 똑같이 맞추어야 출력이 제대로 나온다.

데이터를 보내는 속도와 받는 속도의 합이 맞아야 하기 때문