본문 바로가기
프로그래밍/Arduino

1장. 보드의 LED 점멸

by 길냥이 2024. 5. 5.
728x90

※Blink 예제

아두이노 보드를 처음 열면, 틴커캐드에는 다음과 같은 명령어가 들어가 있습니다.

블럭으로 봐도 똑같이 들어가 있습니다. 

 

이거, 뭐 하는 명령어일까요?

 

일단 코드부터 뜯어봅시다. 

 

 

 

※코드 구성

// C++ code
//
void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}

 

일단 //처리된 부분은 전부 주석입니다. 해석할 필요도 없이 간단하니 패스

 

그러면 코드를 전체적으로 두 부분으로 쪼갤 수 있는데, 바로

void setup() 부분과

 

void loop() 부분입니다. 

 

 

void setup()

void setup() 부분은 기본 할당입니다. 아두이노 보드를 시작한 뒤 한번, 리셋 한 뒤 한번씩만 실행되는 부분입니다. 

이 부분 안에 pinMode(LED_BUILTIN, OUTPUT); 가 적혀 있네요.

이 명령어는 LED_BUILTIN 의 pinMode 를  OUTPUT 으로 설정한다 라는 의미입니다. 

 

조금 알기 쉽게 말하자면, LED_BUILTIN 의 핀 설정을 출력으로 변경한다는 것입니다.

여기서 출력은 아두이노가 이 핀을 통해서 신호를 보낼 수 있는 상태로 바꿈을 의미합니다.

 

 

 

void loop()

void loop() 부분은 반복문입니다. 코드 안의 내용을 계속 아두이노 보드가 반복합니다. 

이 부분 안에는 

digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(LED_BUILTIN, LOW);
delay(1000); // Wait for 1000 millisecond(s)

가 적혀 있습니다. 

 

위쪽 2줄이랑 아래쪽 2줄이 구조가 비슷해 보이네요.

 

digitalWrite(LED_BUILTIN, HIGH); 명령어를 해석해 보죠.

LED_BUILTIN핀에  HIGH 신호를 보낸다는 것입니다. 

 

digitalWrite를 해석 안했다고 생각할 수 있는데, 이 digitalWrite 명령어는 특정한 핀(여기서는 LED_BUILTIN)을 HIGH(5V), LOW(0V) 로 만드는 함수입니다. 

디지털 출력 함수이죠.

 

그럼 남은 줄인 delay(1000); // Wait for 1000 millisecond(s)를 해석해 보죠. 

주석을 제거하면 남는 부분은 delay(1000); 인데, 이 부분이랑 주석이 알려주는 바랑 같을 것 같죠?

실제로도 맞습니다. delay 함수는 매개변수(괄호 안) 에 정한 시간(밀리초 단위) 동안 프로그램을 정지합니다.

1000밀리초가 1초이니, 1초 단위로 멈추게 되겠네요.

 

좋아요, void loop() 안의 모든 구문을 해석했습니다. 

 

 

 

코드 구성

그렇다면 이 코드의 결론은, LED_BUILTIN을 1초 주기로 HIGH와 LOW를 바꾸는 코드가 되겠습니다. 

자, 이제  LED_BUILTIN이 어디서 작동하는지 알아볼까요?

 

일반적으로  LED_BUILTIN은 아두이노 우노 보드의 내장 LED를 뜻합니다. 13번 핀과 연결되어 있죠.

 

즉,  LED_BUILTIN 대신 13을 넣어도 같은 방법으로 동작한다는 것입니다.아두이노 소스코드를 뜯어서 13번 핀 말고 다른 핀으로 바꿀 수도 있지만 이건 여기서 다룰 내용이 아니고..

 

아무튼 코드를 실행해보도록 합시다.

 

 

 

 코드 결과

좋아요, 실제로 틴커캐드에서 이 코드를 실행하니 아두이노 내장 보드의 LED가 점멸하게 되었습니다. 

728x90