아두이노 기초 강좌 4 – 아두이노 소스의 기본구조
아두이노 기초 강좌는 아두이노를 처음 접하시는 전자분야 비 전공자를 위한 강좌입니다. 이해를 위해서는 간단한 프로그래밍 지식이 필요할 수 있습니다. 프로그래밍이 처음이라면 [아두이노 프로그래밍 기초] 강좌를 먼저 읽으시길 권해 드립니다.
=============================================================
.
아두이노 프로그래밍을 시작하기 위해서 아두이노 소스의 기본 구조부터 봐야할 것 같습니다. 아두이노 개발환경을 실행해보세요. 그럼 아래처럼 소스의 기본구조가 갖춰진 형태로 실행될겁니다.
두 개의 함수가 보이시죠? setup 함수와 loop 함수. 이 두 함수가 아두이노의 핵심이 되는 함수입니다.
setup 함수는 아두이노에 전원이 들어오거나 reset 되었을 때 처음 1회만 실행되는 함수입니다. 그래서 보통 아두이노가 가진 pin 들을 초기화하거나 소스코드내에서 사용되는 변수 및 각종 하드웨어를 초기화 하는 코드가 들어갑니다.
loop 함수는 setup이 실행된 후 무한 반복해서 호출되는 함수입니다. 따라서 아두이노가 동작하는 동안 실행 될 핵심 동작코드가 위치합니다.
setup 함수 위 빈 공간에는 보통 전역변수나 라이브러리 헤더 include. 클래스 인스턴스 선언등을 하는 공간입니다. 이해가 안되시면 그냥 파일 어디서나 참조해서 사용할 수 있는 변수 등을 선언해두는 곳이라 생각하시면 됩니다.
프로그래밍에 대한 경험이 있다면 이 정도만 알아도 예제 코드를 이용해 다양한 변형을 하실 수 있으실겁니다. 보통 프로그래밍 기초를 공부하면 제일 처음 접하는 예제가 Hello world!! 프로그램이죠. 가장 간단한 소스코드 형태로 실행되는 과정을 볼 수 있도록 짜보는 프로그램을 Hello world!! 프로그램이라고 하는데요, 아두이노에서는 LED를 이용해서 불을 켜는 예제가 이에 해당합니다. 그럼 LED를 깜빡거리는 가장 간단한 프로그램을 짜보도록 하죠.
아두이노 개발환경에서 [파일 – 예제 – 01. Basics – Blink]를 선택합니다. 그럼 LED 깜빡이기 예제 소스(BLINK)가 에디터에 보일겁니다.
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // Pin 11 has the LED on Teensy 2.0 // Pin 6 has the LED on Teensy++ 2.0 // Pin 13 has the LED on Teensy 3.0 // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
아두이노 UNO 보드에는 보드 가운데에 작은 LED가 박혀있고 이 LED는 아두이노의 13번 핀에 연결되어 있습니다. 그래서 별도의 장비가 없어도 13번 핀을 이용해서 LED를 제어할 수가 있습니다. 위 예제는 이 LED를 주기적으로 깜빡이도록 만든 예제입니다. 아두이노 강좌에서 항상 다루는 가장 기초 예제인거죠.
(이 강좌는 프로그래밍 자체에 대한 내용은 생략하고 아두이노를 제어하는 방법을 제공하는 것을 목표로 합니다. 따라서 문법적인 설명은 최대한 줄이고 소스코드의 흐름과 그에 따른 아두이노의 동작에 집중하겠습니다.)
전역으로 led = 13; 으로 선언되어 있습니다. led 변수는 13번 핀 번호를 저장해두는 전역변수입니다.
setup 함수에서 13번 핀을 pinMode 함수를 통해 OUTPUT 모드로 초기화했습니다. 우리가 13번 핀에 on/off 하는 작업을 할 수 있도록 준비해두는 것입니다.
loop 함수에서 digitalWrite 함수와 delay 함수가 사용되었습니다. digitalWrite 함수는 특정 핀을 실제로 on/off 시키는 함수입니다. 이 함수를 이용하면 특정 핀을 on(5V), off(0V) 상태로 바꿀 수 있습니다. 이 함수를 사용하기 위해 setup에서 pinMode로 초기화 한겁니다. delay 함수는 아두이노의 동작을 잠시 멈추는 함수입니다. 이 함수는 지정된 milli-second(1/1000초) 동안 동작을 멈추도록 해줍니다. 그럼 이제 loop 함수안에서 하는 작업을 아실 수 있으실겁니다.
- 13번 핀을 HIGH 상태로 바꿈 (5V 출력 = LED on)
- 1초 (=1000ms) 동안 멈춤
- 13번 핀을 LOW 상태로 바꿈 (0V 출력 = LED off)
- 1초 (=1000ms) 동안 멈춤
이 소스를 컴파일 – 업로드 해보시면 1초 간격으로 LED가 깜빡이는걸 보실 수 있겠죠. 아두이노의 세계에 오신 것을 환영합니다!!
===============================================================
이 문서는 작성자의 동의없이 개인적인 목적 외의 상업적인 목적으로 활용되어서는 안됩니다.
이 문서의 일부 혹은 전체를 수정, 삭제, 재배포 하여서는 안됩니다.
작성자 : GodsTale (godstale@hotmail.com)