Mechanic 공방

7. 아두이노 LED Blink 예제 실습 본문

아두이노 (Arduino)

7. 아두이노 LED Blink 예제 실습

H-Mechanic 2020. 7. 12. 08:01
728x90
반응형

이번 포스팅에서는 아두이노 프로그램에 내장된 여러 가지 예제들 중, 회로 구성 없이 보드 만으로 구현이 가능한 'LED Blink' 예제를 직접 실습해보고자 한다.

 

[코드 불러오기]

앞선 포스팅에서와 같이 아두이노 보드를 IDE 프로그램과 연결시킨 상태에서 시작한다.

 

아래와 같이 파일 → 예제 01.Basics  Blink’ 선택을 하게 되면,

아래와 같이 주석이 길게 달린 코드 하나가 등장하게 된다.

주석이 달린 예제 코드가 새로운 창으로 켜지면서 기존의 창과 총 2개의 창이 보일 텐데, 기존의 창은 꺼도 아무 문제없다.

 

[코드 업로드 및 실행]

좌측 상단의 '체크 표시 버튼(디버깅 버튼)'을 한 번 눌러 코드 오류를 검사한다.

 

우측 하단에 초록색 가로 바가 생성되며 차오르는 모습을 볼 수 있을 것이다.

 

아무런 오류가 없이 종료되었다면, 좌측 상단의 체크 표시 버튼 옆 '우측 화살표 버튼(컴파일&업로드)'을 클릭하여 보드에 코드 업로드를 수행한다.

 

모든 과정이 정상적으로 완료되었다면 아래와 같이 IDE 창의 하단에 메모리에 관련된 각종 문구가 보인다.

 

빨간색이 없다면 정상적으로 컴파일되어 보드에 업로드된 것이고, 만일 빨간색으로 변하며 Error 문구가 보인다면, 보드 연결 문제일 수도 있으니 이전 포스팅을 참고하여 보드 연결 작업을 다시 수행하여야 한다.

업로드까지 모두 완료되었다면, 아래와 같이 보드에서 주황색 불빛이 1초 간격으로 점등하는 것을 볼 수 있을 것이다.

 

LED Blink 예제를 성공적으로 수행한 것이다.

 

 

[코드 해석]

아두이노 코드는 크게 두 가지 부분으로 구성되어 있다.

 

1. setup()

첫 번째 부분은 코드의 동작에 사용될 핀에 대한 변수 명 선언, 입출력 기능 지정 등에 관한 내용이 담기는 setup() 부분이다.

 

아래의 코드가 위의 예제 코드 중 setup() 부분이다.

void setup() {

// initialize digital pin LED_BUILTIN as an output.

pinMode(LED_BUILTIN, OUTPUT);

}

Setup()은 하나의 함수로, 앞에 붙은 void의 경우 해당 함수는 반환 값이 없는 함수라는 뜻이다.

 

내부의 pinMode() 함수는, 사용하고자 하는 핀의 번호에 할당할 변수의 이름 선언과 입출력에 대한 정보를 선언하는 함수이다.

 

위 예제의 경우, ‘LED_BUILTIN’이라는 변수를 사용하며, 해당 핀은 ‘OUTPUT(출력)’ 기능을 수행하는 핀 임을 나타낸다.

 

여기서 의문점이 하나 생긴다.

 

아두이노의 경우 각 핀에 번호가 존재하는데, 위의 함수에는 번호는 설정을 안 한 상태에서 'LED_BUILTIN'이라는 변수에만 출력 기능을 선언했음에도 제대로 구동을 하였다.

 

이는 아두이노 내에서 ‘LED_BUILTIN’이라는 변수는 특정 핀을 지칭하는 것이기 때문이다.

 

여기서 해당 변수가 나타내는 핀은 아두이노 보드에 내장된 LED와 연결된 핀으로써, 이미 지정이 되어 있는 변수이기 때문에 별도의 번호로 표현해주지 않아도 코드 내에서 자체적으로 인식하는 것이다.

 

2. loop()

두 번째 부분은 실제 동작을 수행하도록 하는 loop() 부분이다.

 

Setup() 부분과 동일하게 반환 값이 없는 함수이기 때문에 앞에 void가 붙는다.

void loop() {

digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}

부분은 함수 이름에서 볼 수 있듯이 무한정 반복되는 구문이다.

 

digitalWrite() 함수는 지정된 핀에 원하는 디지털 신호를 부여할 수 있는 함수이다.

 

위 코드의 경우, setup() 부분에서 미리 선언한 ‘LED_BUILTIN’이라는 핀에 HIGH 값 또는 LOW 값을 주도록 되어 있다.

 

여기서 HIGH, LOW 값은 디지털 신호를 의미하며, 각각 5V와 0V를 의미한다.

 

, HIGH 값이 부여되게 되면 LED가 켜지게 되는 것이고, LOW 값이 부여되게 되면 꺼지게 되는 것이다.

 

다른 표현으로 HIGH 값은 디지털 신호 1을 의미하고, LOW 값은 디지털 신호 0을 의미한다고 보아도 된다.

 

delay() 함수의 경우 일정 시간 동안 코드 진행을 멈추게 해주는 함수이다.

 

단위는 ms (milli seconds)이며, 위 코드 상에서는 LED1초 동안 켰다가 1초 동안 끄는 동작을 반복하는 것으로 작성되어 있다.

 

 

아두이노 예제 코드에는 위에서 볼 수 있듯이 주석이 자세하게 첨부되어 있다.

 

또한 아두이노에서 사용되는 코드는 C 언어 기반이기 때문에, 코드의 전체적인 흐름이나 사용되는 함수에 대한 추가 내용이 필요한 경우 C 언어 문법을 공부하면 큰 도움이 된다.

 

다음 포스팅부터는 실제 회로도를 구성한 실습을 진행해보겠다.

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

질문 댓글은 언제든지 환영입니다~^^

728x90
반응형