void setup(), void loop()의 의미와 차이점

병용전자

·

2021. 9. 3. 23:44

안녕하세요.

Developer 병용입니다.

 

요즘 초등학생들은 조기교육으로 코딩을 배운다고 들었습니다.

저도 늦게나마 요즘 아두이노를 이용해서 코딩을 독학하고 있습니다.

오늘부터는 새롭게 "Developer 병용" 페이지를 열어서

제가 코딩을 독학하는 동시에 여기에 아두이노 코딩이나 추후 코딩과 관련된 내용을 올려보겠습니다.

 

오늘 그 첫 시간은 아두이노 IDE(아두이노 통합 개발 환경: 아두이노 코딩 후 아두이노에 업로드할 수 있는 개발툴)을

실행하거나 아두이노 코딩에 있어서 기초 중에 기초인 void setup()과 void loop()에 대해서 알아보겠습니다.

 

한 번만 실행 - void setup()

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

}

void setup() 안에 적은 코드는 1번만 실행하게 됩니다.

한번만 실행한다고 해서 아두이노가 부팅해서 void setup의 코드를 모두 실행하여도 특정 조건에 도달하면

다시 void setup이 작동할 수 있게도 만들 수 있으며 void setup은 아두이노에 연결된 각 장치를 셋팅할 때

그리고 위에서 언급한 것처럼 특정 조건에서 수행해야할 일도 지정할 수 있습니다.

 

위에 코드 상자를 보시면 void setup() 하고 중괄호 {  }로 빈 공간이 있는 것을 볼 수 있습니다.

이 공간에 코드를 작성해서 넣으시면 됩니다.

그리고 위에 코드상자에 보시면 // put your setup code here이라고 적힌 글을

주석으로 코드에 아무런 영향을 끼치지 않으니 지우셔도 됩니다.

 

+ void setup() 사용 예시 (feat. pinMode)

예를 들어서 아두이노 8번 핀에 피에조 부저를 연결해서 소리가 나게 하고 싶다면,

피에조 부저가 연결된 8번 핀을 출력을 위한 핀으로 설정해주시면 됩니다.

이때 사용하는 것이 pinMode를 사용하시면 됩니다.

pinMode는 말 그대로 핀의 모드 "지정한 핀을 출력 혹은 입력"으로 설정할 수 있는 코드입니다.

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

위와 같이 입력하면 8번 핀을 출력으로 설정하여서 피에조 부저에 소리를 낼 수 있게 됩니다.

물론, 피에조 버저에 소리를 낼려면 tone 코드를 사용해서 음계 주파수를 정해줘야겠죠?

 

이번에는 11번 핀에 연결된 초음파 센서를 이용하여 물체와 센서 간의 거리를 알아보기 위해서

pinMode를 입력으로 설정해보겠습니다.

void setup() {
pinMode(11, INPUT);
}

위처럼 이번에는 INPUT를 사용하여 입력으로 바꾸면 됩니다.

 

무한반복 - void loop()

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

}

loop 말 그대로 반복을 의미합니다.

사실상 아두이노 코딩에서 가장 많이 쓰이는 공간이라고 해도 과언이 아닙니다.

아두이노를 코딩에서 실사용할 때에도 void loop를 거의 이용하게 됩니다.

 

말 그대로 입력해둔 코드를 무한반복할 수 있고 위에 void setup과 같이

특정 조건에 달했을 때 조건에 맞는 작동을 시킬 수도 있습니다.

예를 들어서 제가 구입한 LOLIN(Wemos) D1 R1과 같은 Wi-Fi를 지원하는 보드의 경우 Wi-Fi가 연결될 동안

주변 라우터를 계속 검색하게 하거나 버튼이 눌리기 전까지는 계속 LED가 들어오게도 할 수 있겠죠?

 

+ void loop() 사용 예시

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

void loop() {
tone(8, 523, 2000);
}

위 코드대로 입력하면 8번 핀에 연결된 피에조 부저에 음이름 "도(C)"가 멈추지 않고 계속 출력되도록 만들 수 있습니다.