본문 바로가기

아두이노

Blink 예제로 배우는 아두이노 기본 코드

아두이노 프로그램을 설치하면 기본 예제가 같이 설치되는데, 여기서 Blink 예제를 통해서 아두이노 기본 코드를 이해하려고 한다.

 

Blink 예제 열기

 

예제를 열기 위해서 아두이노 IDE 프로그램을 실행한다. 

파일 > 예제 > Basics > Blink 순서대로 클릭하면 된다.

 

 

전체 코드 분석

 

먼저 Blink 예제 전체 코드를 확인한다.

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
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
}

 

여기서  /* */ 안에 들어있는 내용은 여러줄을 주석으로 처리하는데 주석이란 프로그램 실행에 아무런 영향도 주지 않으며 컴파일할 때 무시된다. 주석은 코드를 작성하거나 읽어햐 하는 사람에게 코드 내용을 쉽게 파악하기 위해 사용한다.  

주석의 길이에 따라 방식이 다르다.

/* 
여려줄 주석처리
*/ 

 

 // 한 줄 주석처리

 

setup 함수(초기 설정 함수)를 분리해서 보자.

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

setup 함수는 처리 부분에 아무것도 없더라도 반드시 있어야하는 함수이며 아두이노를 실행하면 제일 먼저 딱 한번 실행되는 함수이다. 

 

참고로 함수를 정의하는 방법을 설명하자면 함수는 데이터형, 함수이름, 소괄호()로 싸여 있는 매개변수, 중괄호{}로 싸여 있는 처리 부분으로 구성된다.

데이터형 함수명(매개변수){
    처리 부분
}

 

 

pinMode 함수는 아두이노에 기본으로 있는 함수로, 내장함수(또는 시스템 함수)라고 부른다.  이 함수는 아두이노 핀 번호를 출력(OUTPUT) 또는 입력(INPUT)으로 설정할 때 쓰인다.

pinMode(설정할 핀, 출력 또는 입력) ;

지금 예제에서는 LED_BUILTIN 핀 번호를 출력으로 설정한다는 의미이다.  LED_BUILTIN 은 아두이노 보드에 기본으로 내장되어 있는 LED를 뜻하는데 아두이노 우노, 메가 보드에서는 13번 핀이다. 

 

 

loop 함수는 setup함수처럼 아두이노에서 필수로 사용해야 하는 함수로 아두이노가 작동하는 동안 계속 반복하는 함수이다. 무한반복이라고 생각하면 쉽다.

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() 함수는 디지털 출력 함수인데 LED_BUILTIN 핀 번호를 HIGH(켜짐)으로 설정한다는 의미이다. LED_BUILTIN 핀 번호를 LOW(꺼짐)로 설정하면 LED가 꺼지게 된다. 실제 회로에서 HIGH의 전압은 5V의 가까운 값이고 LOW의 전압은 0V에 가까운 값이다. 하지만 코드에서 의미는 HIGH는 1, LOW는 0을 뜻한다. 

 

 

delay() 함수는 다음 명령어를 실행하기 전에 대기하는 기능으로 아두이노에서는 밀리초(ms)를 사용한다. 여기서는 1000ms 이므로 1초동안 대기하라는 뜻이다. 

 

 

아래의 링크를 클릭하면 아두이노 없이도 팅커캐드에서 회로를 시뮬레이션 할 수 있다.

'코드' 버튼을 클릭하면 코드를 확인할 수 있고 '시뮬레이션 시작' 버튼을 클릭하면 아두이노 13번 핀 밑에 LED가 깜빡깜빡하는 것을 확인할 수 있다.

 

www.tinkercad.com/embed/5w9fdaEqRsO?editbtn=1"

 

Circuit design Blink

Circuit design Blink created by myway 내맘대로 with Tinkercad

www.tinkercad.com