전자, 전기, 소프트웨어, 기계, 3D 프린터, 아두이노, 라즈베리파이, 쇼핑몰 창업

전체 페이지뷰

이 블로그 검색

최신글

[Blender] 3D viewport 사용법

[강좌] 5. 아두이노 내장 LED 제어하기


무작정 보고 따라하며 배우는 아두이노 강좌입니다.
아두이노 공식 사이트에서 제공하는 강좌를 바탕으로 작성되었습니다.
해당 게시글은 Arduino UNO 보드를 기준으로 작성되었습니다.

5. 내장 LED 제어하기


보통 소프트웨어 교육을 시작하면 "Hello World"를 출력하는 방법을 먼저 가르쳐줍니다.
아두이노 프로그램 자체에 내장되어있는 예제에서도 첫번째 예제는 시리얼 모니터로 아날로그 센서의 값을 읽어오는 것이 있지요. 

하지만 본 강좌에서는 일반적인 아두이노 교육에서 가장 먼저 배우는 LED 제어를 알려드립니다.

이번 강좌에서는 아두이노에 자체 내장된 LED를 제어할 것으로, 추가적인 회로 구성은 필요하지 않습니다. 
아두이노와 PC를 연결시키고 포트를 잡아줍니다.


아두이노에서는 13번 핀과 내장 LED가 연동되어있습니다.

이말은 즉슨, 아두이노 코드를 짤 때, 13번 핀에 굳이 회로를 만들지 않고도 코드를 짜면 아두이노 보드에 있는 LED가 작동됩니다.


아두이노 우노 ( Arduino UNO ) 보드를 기준으로 빨간 표시된 위치에 LED가 있습니다.


아두이노와 PC를 USB 케이블로 연결 후 아두이노를 켜 줍니다.

본 강좌에서는 아두이노 프로그램에 내장되어있는 예제 소스들을 분석하는 방식으로 강좌를 진행합니다.



일단 예제 파일에서 1.Basic -> Blink 를 열어줍니다.


Blink 예제를 열어주면 아래와 같은 소스가 열립니다.
/* */으로 이루어진 주석 부분에는 해당 예제에 대한 간단한 설명이 들어있습니다.



/* 
깜빡임
LED를 1초간 킵니다, 그리고 1초간 끕니다, 반복적으로.
대부분의 아두이노는 제어가 가능한 LED가 내장되어 있습니다. UNO 보드 MEGA보드, ZERO보드에 13번 디지털 핀으로 내장되어 있습니다. MKR1000보드의 경우 6번 핀에 연결되어 있습니다. 
~중략
더 많은 보드들의 LED가 내장된 핀 번호를 알고 싶으면 아두이노 사이트를 참고하라고 합니다.
~중략
*/
/*
  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() {

  // LED가 내장된 핀 번호를 출력 모드로 설정해 줍니다.

  // 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)
  // LED를 킵니다.  HIGH 는 전압의 정도를 나타냅니다.
  delay(1000);                       // wait for a second
  // 잠깐 기다려줍니다.
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  // LED의 전압을 LOW로 하여 꺼 줍니다.
  delay(1000);                       // wait for a second
  // 잠깐 기다려줍니다.
}



굉장히 기초적인 코드입니다.

LED_BUILTIN 이라는 핀을 출력모드로 정하고, 반복구문에서 LED_BUILTIN 핀에 전압을 높여주고 1초간 쉬었다가 전압을 낮춰주고 1초간 쉬는 작업을 반복합니다.



지난 강좌에서 setup() 함수와 loop()함수에 대해 설명하였기에, 본 강좌에서는 해당 내용을 언급하지 않고 새로이 등장한 명령어에 대해 설명하겠습니다.

위 코드에서 아래 명령어들이 새로 등장하였습니다.

pinMode(LED_BUILTIN, OUTPUT);
  보통 setup()함수에서 pinMode(핀번호, 모드); 의 형태로 사용합니다.
  핀번호에서 지정된 핀이, INPUT 인지 OUTPUT 모드인지 지정할 때 사용합니다.

  위 코드에서는 LED 출력을 위해 사용한 핀이라 OUTPUT 모드로 지정되어있습니다.

  UNO 보드를 사용한다면 LED_BUILTIN을 13 으로 수정해주면 됩니다.

digitalWrite(LED_BUILTIN, HIGH);
  디지털 출력을 담당하는 명령어입니다.
  digitalWrite(핀번호, 상태); 의 형태로 사용합니다.

  위 코드에서는 LED에 불을 키고 끄기 위해 LED_BUILTIN을 UNO보드를 사용한다면 13으로 바꿔줍니다.  전압의 상태를 0과 1 또는 LOW와 HIGH로 조절합니다.

  LED를 키고 끄기 때문에 위 소스에서는 HIGH 와 LOW 가 반복적으로 사용되고 있습니다.

delay(1000);
  1초간 잠시 기다려주는 명령어입니다.
  digitalWrite명령어 사이에 사용되어, LED에 전압을 인가한 후 1초간 기다려주는 목적으로 사용되고 있습니다. 
  
  delay(시간); 형식으로 사용되며, 시간 단위로는 ms(밀리세컨드)를 사용합니다.
  1초의 지연을 위해서는 1000을 입력해 주어야 합니다.


본 예제에서 언급된 새로운 코드 3가지를 이용하여 LED를 더욱 다양하게 제어할 수 있습니다.

다음 강좌에서는 1. Basic 예제의 DigitalReadSerial에 대해 설명해 드리겠습니다.

0 개의 댓글:

댓글 쓰기