본문 바로가기
코딩/아두이노

[아두이노 강좌] 예제로 배우는 아두이노 #1 digitalWrite() 사용법, 내장 LED 점등하기

by DIYver 2020. 3. 24.

<목표>

 

- digitalWrite() 명령어를 이용하여 아두이노에 기본적으로 내장되어있는 LED를 점등하고 소등시킬 수 있다.


<준비물>

 

- 아두이노(나노, 우노, 메가), 시리얼 통신 케이블

아두이노 우노 / 시리얼 케이블(USB - B타입)

 


<배선도>

 

없음


<코드>

 

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
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
}

 

코드는 아두이노 - 파일 - 예제 - 01.Basics - Blink  의 예제 파일과 동일 합니다.

예제파일을 쓰셔도 되고, 위의 코드를 복사하여 붙여넣으셔도 됩니다.


<아두이노에 업로드 하는 방법>

 

보드로는 자신이 사용하는 아두이노 보드를 선택합니다.

 

그 다음으로는 포트를 선택해야 합니다.

이 과정은 컴퓨터마다 다 다르게 뜨는데요, 저의 경우에는 COM12 에 아두이노 우노로 잡힌것이 확인되었습니다.

아두이노가 안뜨고 보통 COM3, COM4 이렇게 뜨실 수도 있습니다. 그거 선택하시면 됩니다.

 

 

프로그래머는 AVRISP mkll 로 선택되어 있는지 확인 합니다.

 

키보드에서 Ctrl+u 를 누르셔도 되고, 아두이노의 화살표를 눌러도 됩니다.

업로드가 완료되면 완료되었다고 뜨고, 아닌경우에 오류 메세지를 보여줍니다.

오류가 뜨면 다시 하면 업로드를 해보시거나, 처음부터 다시 따라해 보시기 바랍니다.

 


 

<실행 결과>

 

실행 결과 애니메이션

 

아두이노의 내장 LED가 1초 마다 점등과 소등을 반복하는 것을 확인할 수 있다.

 

그리고 아두이노 코드를 해석하자면

pinMode( pin_number , mode ) : pin_number에 해당하는 핀에 설정을 해주는 명령어, mode로는 INPUT(입력) 과 OUTPUT(출력)을 사용할 수 있다.

digitalWrite( pin_number , state ) : pin_number에 해당하는 핀에 전압을 설정하는 명령어, 전압을 가하거나(HIGH) 전압을 걸지 않게(LOW)할 수 있다.

delay( time ) : time에 해당하는 시간(단위 : ms)동안 멈추는 명령어, 코드가 진행하다가 delay 명령어에서 멈춰서 다음 코드로 넘어가지 못하게 한다. 1초를 멈추게 하려면 delay(1000)  을 사용한다.

 

즉, 코드의 내용을 보면

setup 부분에서

LED_BUILTIN에 해당하는 핀을 출력으로 사용하고

loop 부분에서

LED_BUILTIN에 해당하는 핀에 5V를 인가하고, 1초를 대기한 후에 전압을 걸지 않고, 또 1초를 대기한다.

 

그래서 1초마다 led 가 켜지고 꺼지게 하는 것을 반복할 수 있다.

 

여기서 핵심은 digitalWrite()를 이용하여 아두이노 각 핀에 5V를 걸어줄 수도 있고, 0V로 걸어줄 수 있다는 것이다.

물론 이전에 digitalWrite()로 전압을 인가하려면 pinMode()를 사용하여 해당 핀을 OUTPUT(출력)으로 설정을 해주어야 한다.

 

 


 

※ 궁금하시거나 질문사항이 있으시면 댓글로 작성해주시면 답변해 드릴 수 있는 부분에서 친절히 답변드리겠습니다!

 

 

댓글