릴리패드 아두이노
Link
Contents
릴리패드 아두이노란 무엇인가요?
‘아두이노(Arduino)’는 최근 많은 사람들에게 알려진 작은 마이크로컴퓨터를 이르는 단어입니다. 아두이노 마이컴보드는 매우 여러 가지 종류의 이름으로 판매되고 다루어지지만 보드의 기능이나 사용법은 거의 동일합니다. ‘릴리패드(Lilypad)’는 미국 스파크펀(Sparkfun)사에서 개발하여 판매하는 상표이름으로 스마트의류에 쉽게 사용할 수 있도록 만든 특징이 있습니다. 이외에도 아다프루이트(Adafruit)사의 ‘플로라(Flora)’와 같이 동일한 기능을 가진 제품이 있습니다. 릴리패드 아두이노 보드에는 릴리패드 아두이노 328 메인보드와 릴리패드 아두이노 심플보드 그리고 릴리패드 아두이노 USB 등의 여러 가지 종류가 있습니다.
릴리패드 아두이노 제품은 스마트의류 또는 스마트 장신구를 만들기 위한 용도이므로 부품사이의 전기적 연결을 점퍼선이 아닌 전도성 실을 사용합니다. 그래서 여러분은 전도성 실을 추가로 구매할 필요가 있습니다.
아래 세부 내용들을 살펴볼 수 있습니다.
1) 아두이노 프로그램 설치하기
2) 아두이노 보드 및 포트 설정하기
3) 내장된 LED 깜박이기
4) LED 깜박이는 속도 조절하기
위 그림에서 왼쪽 제품은 ‘릴리패드 아두이노 USB’ 이고, 오른쪽 제품은 ‘릴리패드 아두이노 328메인보드’ 입니다. 기본적인 사용법은 동일하지만, '릴리패드 아두이노 USB' 제품은 별도의 리튬-폴리머 배터리를 연결할 수 있는 연결잭이 있어서 보다 쉽게 전원을 공급할 수 있습니다. 이외에 ‘릴리패드 아두이노328메인보드’의 경우 그림처럼 FTDI Basic 부품을 추가로 사용해서 PC와 USB를 연결할 수 있습니다.
본 실습에는 아래 부품들이 필요합니다.
(1) 릴리패드 아두이노 USB
(2) 릴리패드 광센서
(3) 릴리패드 부저
(4) 릴리패드 LED BLUE
(5) 리튬-폴리머 배터리
(6) USB2.0 A-microB (마이크로5핀)
(7) 악어클립
이외에도 스마트의류 실습을 위해서는 몇가지 재료가 더 필요합니다. 우선 전도성실 이외에 바늘 그리고 부직포 또는 천을 준비할 필요가 있습니다.
릴리패드 아두이노 USB 제품은 3.3V의 동작전압과 9개의 디지털I/O핀, 4개의 PWM 아날로그 출력핀(3,9,10,11) 및 4개의 아날로그 입력핀(A2,A3,A4,A5)을 사용할 수 있습니다. 그리고 LED 출력으로 동작하는 13핀이 포함됩니다.
지금부터 스마트의류 실습을 위해 ‘릴리패드 아두이노 USB’를 ‘아두이노’로 줄여서 표현합니다. 천천히 릴리패드 아두이노의 세계로 들어가 봅시다!
1) 아두이노 프로그램 설치하기
릴리패드 아두이노 역시 아두이노 홈페이지에서 무료로 다운로드 받아 설치할 수 있습니다. 아두이노 홈페이지(www.arduino.cc)에서 다음 과정으로 최신 버전의 아두이노 프로그램을 여러분의 컴퓨터에 설치하면 됩니다.
다운로드한 프로그램 아이콘을 더블클릭하여 아두이노 IDE프로그램을 설치해봅시다. 설치 도중에 아래 대화상자가 나타나면 설치를 선택합니다.
2) 아두이노 보드 및 포트 설정하기
릴리패드 아두이노USB를 사용하여 스케치를 업로드하려면 먼저 IDE프로그램에서 보드와 포트를 바르게 설정해야만 합니다. 아래 사진과 같이 USB케이블로 PC의 USB 포트에 연결합니다.
다음 단계로 아두이노 IDE프로그램을 더블클릭하여 오픈한 다음 도구메뉴에서 보드메뉴 아래의 LilyPad Arduino USB 를 선택하고 포트메뉴에서 현재 사용중인 컴포트를 선택하면 됩니다.
3) 내장된 LED 깜박이기
아두이노에 별도의 하드웨어 부품을 연결하지 않고, 내장된 13번핀 LED를 사용하여 가장 간단한 동작을 실습해봅시다. 아래의 스케치는 여러분의 아두이노 IDE프로그램 예제에 소개된 것입니다.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
위의 스케치를 외우지 않고도 여러분은 항상 IDE프로그램에 내장된 예제를 활용할 수 있습니다. 아두이노 프로그램 메뉴 예제에서 찾아서 동작시켜도 좋습니다.
아두이노 스케치는 setup()함수와 loop()함수로 구성됩니다. C언어 체계를 그대로 사용하지만, 프로그램 초보자들이 아두이노 스케치를 조금 더 쉽게 이해하고 다룰 수 있도록 변형한 구조입니다. setup()함수는 아두이노에 전원을 공급하거나, 리셋(reset) 스위치를 동작시킬 때 한번만 동작하는 프로그램입니다. 반면에 loop()함수는 아두이노에 전원을 공급하는 동안 계속 반복 실행하도록 설정되어 있습니다. 그래서 어떤 동작이후 특별히 프로그램을 중단하고 싶다면 별도의 코드를 사용해야할 수 있습니다.
주의할 사항은 아두이노 스케치에서는 대문자와 소문자를 구분하여 인식하므로 대소문자까지 바르게 표기하는 방법을 익혀야 합니다.
실습의 setup() 함수 내에 표현된 “ pinMode(13,OUTPUT); ” 의미는 “13번 디지털핀을 출력으로 사용한다”라는 의미와 같습니다. 그리고 LED를 직접 켜고 끄는 명령은 loop() 함수에서 표현하면 LED가 켜지고 꺼지는 동작을 반복할 수 있습니다. digitalWrite(13, HIGH); 는 13번 핀에 5V 전압을 공급하여 LED가 켜지도록 명령하는 표현이고, 이어서 delay(1000); 은 1000ms (1초)동안 이전 명령을 지속하도록 명령하는 표현입니다. 다음 동작으로 digitalWrite(13, LOW); 는 13번 핀에 0V 전압을 인가하여 LED가 꺼지도록 명령하고 delay(1000); 표현으로 LED가 꺼지는 동작을 1초동안 유지하도록 명령합니다. 이상의 표현들은 loop() 함수에서 사용하였기 때문에 무한 반복적으로 동작합니다. 만약, LED가 켜지고 꺼지는 동작을 한번만 실행하고 싶다면, setup() 함수내로 옮기면 됩니다. 그리고 5번 또는 10번처럼 유한한 횟수만큼 LED 동작을 실행하고 싶다면 여러분은 별도의 조건문과 반복문을 추가로 사용하면 됩니다.
아두이노에 연결된 대부분의 센서 또는 하드웨어 장치들은 전원을 공급하는 동안 프로그래머가 설계한 순서로 계속 동작하기를 희망하는 경우가 대부분입니다. 따라서 지금부터의 스케치 작성 예제들은 초기설정조건에 대한 내용을 setup() 함수내에 그리고 반복적인 동작을 필요로 하는 스케치 내용들은 loop()함수 내에서 작성할 것입니다. 실습내용을 동영상으로 직접 살펴보려면 아래 웹주소를 클릭해봅시다!
http://fribot.blog.me/220406376301
4) LED 깜박이는 속도 조절하기
아두이노 LED가 깜박이는 속도를 바꿔봅시다! delay() 함수내의 숫자는 1/1000초 단위의 숫자입니다. 따라서 숫자 값이 1000이면 1초를 나타냅니다. 아래 스케치에서 LED가 켜지는 동안의 시간을 나타내는 delay(1000); 에서 1000 값을 더 크게 또는 더 작게 바꾸면 LED 가 켜지는 시간을 변경할 수 있습니다. 동시에 LED가 꺼지는 시간도 delay(1000); 에서 1000 값을 변경하면 됩니다.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000); // LED ON 시간
digitalWrite(13, LOW);
delay(1000); // LED OFF 시간
}
여러분이 희망하는 LED 깜박임 속도는 delay() 함수 값을 변경하면서 만들어봅시다. LED 깜박임 속도는 디지털 출력함수 digitalWrite() 이후의 delay() 함수 값을 변경하여 만들 수 있습니다. 여기서 digitalWrite() 함수는 아두이노의 디지털 출력을 표현하는 함수입니다. 함수내에는 핀번호와 상태값(HIGH 또는 LOW)을 표현합니다. LED가 1초 동안 켜지고 꺼지는 깜박임 속도를 다르게 바꿔봅시다. 만약 한번은 LED가 1초간격으로 반짝이고, 이어서 또 한번은 0.1초 간격으로 반짝이도록 하고 싶다면, 간단한 LED 동작 명령들을 추가하여 실행하면 됩니다.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000); // LED ON 시간
digitalWrite(13, LOW);
delay(1000); // LED OFF 시간
digitalWrite(13, HIGH);
delay(100); // LED ON 시간
digitalWrite(13, LOW);
delay(100); // LED OFF 시간
}
지금까지 잘 따라할 수 있었습니까? 내용을 보고도 쉽게 이해되지 않는다면 프라이봇 카톡으로 실습장면과 함께 질문해보세요!