본문 바로가기

아두이노 IDE/핵심프로그래밍 언어

1. 기본 구조

핵심 아두이노 프로그래밍 언어 1 - 기본 구조



1. setup() : 준비
2. loop()
: 실행




아두이노 프로그래밍의 기본 구조를 이해하려면 두 가지를 기억해야 합니다.
    
하나는 아두이노 작동 준비를 위한 setup이고, 다른 하나는 실행을 위한 loop입니다.
 
예시를 한 번 보겠습니다.


void setup() {
     명령 내용
}
 
void loop() {
     명령 내용
}


이 구조를 쉽게 이해해 보도록 하겠습니다.
     
4인 가족의 밥상을 삼시세끼 차려야 한다고 상상해봅시다.
    
먼저 식사를 차릴 때 기본으로 갖춰야할 준비 조건이 있을 것입니다.
 
예를 들면 수저, 밥그릇, 국그릇, 반찬그릇, 컵 같은 것입니다.
     
또한 끼니 때마다 밥상을 차리는 실행 조건도 있어야 하겠지요. 
    
일단 아침에는 빵과 시리얼, 우유를 먹고, 점심에는 밥과 찌개류를 먹고, 저녁에는 밥과 고기반찬을 먹는다고 가정해 보겠습니다.
     
이 내용을 아두이노 기본 구조에 맞춰 정리해 봅시다.


void setup() {
    수저, 밥그릇, 국그릇, 반찬그릇, 4개 준비.
}
 

void loop() {
        만약 아침이라면 {
         각각의 밥그릇에 빵을 담는다.
         각각의 국그릇에 시리얼을 담는다.
         각각의 컵에 우유를 담는다.
         숟가락 4개를 놓는다.
     }
     만약 점심이라면 {
         각각의 밥그릇에 밥을 담는다.
         각각의 국그릇에 찌개를 담는다.
         수저를 4개 놓는다.
     }
     만약 저녁이라면 {
         각각의 밥그릇에 밥을 담는다.
         반찬그릇에 고기 반찬을 놓는다.
         수저를 4개 놓는다.
     }
}




1. setup()


void setup() 다음에 나오는 {  } 사이에는 아두이노를 처음 세팅할 때 필요한 명령 넣어야 합니다.
 
예를 들면 몇 번 핀을 출력으로 할지 입력으로 할지 선언하거나, 시리얼 모니터를 연결할지 등을 명령하는 것이지요.
 
따라서 setup() 뒤에 오는 명령어는 아두이노에 전원이 들어오거나 리셋이 될 때 처음 한 번만 실행됩니다.
    
예를 한 번 보겠습니다.


void setup() {
     pinMode(13, OUTPUT);
}


이 예문은 아두이노의 13번 핀을 출력하는 핀으로 사용하도록 준비시킨다는 세팅 명령입니다.
 
pinMode는 아두이노에 있는 핀을 입력으로 할지 출력으로 할지 정할 때 사용하지요.

만약 아두이노를 실행하기 위해 따로 무언가를 세팅할 필요가 없다면 어떻게 해야 할까요?
 
그렇더라도 void setup() 구문을 꼭 들어가야 합니다.
 
{ }을 공백으로 남겨 두더라도 말이죠

 
 

2. loop()


setup()에 의해 준비된 아두이노 보드는 loop()에 있는 명령을 무한히 반복하면서 실행시킵니다.
 
따라서 loop() 뒤에 오는 { } 사이에는 개발자가 원하는 대로 아두이노가 움직이도록 하는 명령들을 넣어야 합니다.
 
실질적인 작동 프로그래밍이 여기에서 이뤄진다고 볼 수 있지요.
 
예를 한 번 보겠습니다.


void loop() {
     digitalWrite(13, HIGH);
     delay(1000);
     digitalWrite(13, LOW);
     delay(1000);
}


digitalWrite(13, HIGH)13번 핀을 HIGH 상태(5V 전압의 전류를 보내는 상태)로 만들라는 것입니다.
 
delay(1000)1000밀리초, 1초 동안 기다리라는 것입니다.
 
digitalWrite(13, LOW)13번 핀을 LOW 상태(전기를 인가하지 않도록 하는 상태)로 만들라는 것입니다.
 
정리하면 13번 핀에 전기가 1초 동안 들어왔다가 1초 동안 끊기도록 무한히 반복해 작동하라는 명령인 것입니다.
 
 

'아두이노 IDE > 핵심프로그래밍 언어' 카테고리의 다른 글

6. 상수-2  (0) 2017.02.22
5. 상수 - 1  (0) 2017.02.22
4. 아날로그핀 입출력  (1) 2017.02.22
3. 디지털핀 입출력  (0) 2017.02.22
2. 기호  (0) 2017.02.22