December 22, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

[39호]카멜레온 DIY LED 이야기 ⑤

39 ptb diyled (1)

 

카멜레온 DIY LED 이야기 5

LED ART 2 : 특별한 크리스마스 트리

 

글 | 신상석 ssshin@jcnet.co.kr

디바이스마트 매거진 독자 여러분, 안녕하세요. 앞으로 5회에 걸쳐 [카멜레온 DIY LED 이야기]를 진행할 신상석입니다.
이 이야기는 WS2812B라는 컬러 LED를 기반으로 제작된 [카멜레온 DIY LED] 시리즈를 이용하여 생활에 필요한 다양한 형상을 꾸며보고 이것을 다양한 컬러로 디스플레이 해보는 내용입니다. 앞으로 진행할 내용에 대하여 간단히 알아보면 다음과 같습니다. (약간 변경될 수도 있습니다.)
앞으로 즐겁고 유익한 강의가 될 수 있도록 많은 격려와 성원 부탁드립니다.

 

디바이스마트매거진 독자 여러분, 안녕하세요. 반갑습니다.
[카멜레온 DIY LED 이야기] 다섯번째, 어느덧 벌써 마지막 시간이네요.
지난 시간에는 카멜레온 DIY LED(카DL)을 이용하여 [I ♥ U] 모양과 [변색 카멜레온]을 꾸미고 실행시켜 보았습니다. 오늘은 좀 더 멋진 프로젝트로 [특별한 크리스마스 트리] 만들기에 도전해 보겠습니다. 사슴도 만들고, 산타도 만들고, 커다랗고 멋진 눈 결정도 만들고… 그리고 이것들을 엮어서 크리스마스 트리를 만든 다음, 스마트폰으로 트리 점등을 해 보는데까지 씽씽 달려보겠습니다. 야호~ 신난다. “흰 눈 사이로 ♬ 썰매를 타고 ♬ GO~ GO~”

아이템(ITEM) 모듈

지난번 이야기에서 카DL의 기본 구성품 중 4종류의 모듈을 소개한 바 있습니다. BAR 모듈은 직선용, ARC 모듈은 곡선용, DIR 모듈은 방향 전환용, FIGURE 모듈은 기본 도형용으로 소개를 하였지요. 크리스마스 트리를 장식할 여러가지 형상을 만들기 전에, 카DL의 나머지 형상 모듈인 ITEM 모듈을 소개하는 것이 앞으로의 이야기 전개에 편리할 것 같아 이것을 먼저 간단히 살펴보고 가겠습니다. 아이템(ITEM) 모듈은 말 그대로 사람들이 자주 사용할만한 간단한 아이템을 형상화한 모듈입니다.

39 ptb diyled (2)

해(링), 달, 별, 작은화살표, 하트, 눈, 큰화살표의 7가지 모듈이 있는데, 이것은 개별 형상을 가지고 있으므로 단독으로도 사용할 수 있고, 다른 모듈과 조합하여 사용할 수도 있습니다. 창조적인 상상력을 동원하면 이 모듈들을 이리저리 엮어서 또 다른 멋진 아이템을 만들어 낼 수도 있겠습니다.

특별한 크리스마스 트리

카DL로 [특별한 크리스마스 트리]를 제작하기로 하였으므로 일단 어떤 모양으로 어떤 크기로 어떤 기능을 갖도록 만들 것인지를 먼저 고민하여 결정한 후 이것을 제작하도록 하겠습니다. 일단 하고 싶은 것을 죽 나열해 보기로 하지요.

· 내 키 정도 되는(1.5m ~ 2m) 크기의 녹색 트리에 장식한다.
· 카DL의 ARC 모듈을 사용하여 물결 모양의 형상을 만들고, 반짝반짝하는 느낌과 물결이 흘러가는 느낌을 주도록 프로그램한다.
· 카DL의 BAR, FIGURE, ITEM 모듈을 적당히 섞어서 사용하여 알록달록하고 다양한 색상이 나타나도록 프로그램한다.
· 손바닥 정도 크기의 크리스마스 상징물을 카DL을 이용하여 5-6개 만들어 배치하고, 각 상징물의 색상과 움직임이 구별되도록 프로그램한다.
· 얼굴정도 크기로 조금 큰 특별 형상을 1개 만들어 중앙에 배치하고, 은은하게 조금씩 변하도록 프로그램한다.
· 스마트폰으로 그룹별로 껐다 켰다 할 수 있게 프로그램한다.

(사실 이것들을 모두 한꺼번에 다 제작한다고 하면 비용이 꽤 많이 듭니다. 실제로는 자신이 해보고 싶은 것만, 마음에 드는 것만 부분적으로 구현하면 되겠습니다. 별 하나만 제작한다고 해도 충분히 특별한 크리스마트 트리가 될 수 있으니까요.)
어느 정도 아우트라인이 갖추어졌으므로 세부적인 것은 하나씩 구현해 가면서 구체화시켜 보겠습니다.

1단계 : 트리 구입 및 약간의 장식 구입
기반이 되는 트리가 있어야 실제로 구현하면서 적용해 볼 수 있으므로 트리를 우선 준비하여야 하겠습니다. 방울이나 종, 리본 등 크리스마스 기분을 내기 위한 약간의 장식도 함께 준비해 두면 더 예쁠테니 취향에 따라서 원하는 것을 구입하여 준비합니다.

2단계 : 필요한 형상 설계하기
두번째로 할 일은 지난 회에도 언급한 것처럼 형상을 제작하여야 합니다. 트리에 얹혀 있는 형태로 만들면 되므로 필요한 형상을 만들고 이것들을 케이블로 죽 이어가는 형태로 하겠습니다.
기본 형상은 있는 그대로 연결하면 되므로, 크리스마스 기분이 나는 손바닥만한 형상 5-6개와 얼굴만한 큰 형상 1개를 정해서 따로 만들겠습니다. 무엇이 좋을까요? 음… 심사숙고한 끝에…
십자가, 별, 트리, 지팡이, 싼타, 루돌프 이렇게 6가지 형상은 손바닥만한 크기로 만들고, 눈(SNOW) 결정은 얼굴만한 형상으로 조금 크게 구현하는 것으로 하겠습니다.
카DL로 이런 모양을 형상화하여 구현하려면 사실 디자인적인 감각이 약간 필요합니다만, 뭐, 그냥 자신이 원하는대로 만들어도 별 지장은 없습니다. 제 멋에 사는거니까요.

저는 다행히 주변에 디자이너가 있어서 도움을 받아 아래와 같이 형상 설계를 하였습니다.
AUTOCAD 같은 설계도구를 이용하여 만들었기 때문에 상당히 정교하게 제작되었는데, 이런 도구없이 손으로 대강 쓱쓱 그려도 무방합니다.
형상이 마음에 드시나요? 단순하지만 특징을 잘 잡아 잘 표현된 것 같습니다. 저는 매우 만족합니다.

39 ptb diyled (3)

 

39 ptb diyled (4)

와우~ [눈(SNOW) 결정] 형상! 이건 거의 예술이네요. FIGURE 모듈(JLED-TRI-6)과 ITEM 모듈(JLED-ARROW-9, JLED-SNOW-12) 그리고 BAR 모듈(JLED-BAR-1, JLED-BAR-2)의 5가지 모듈을 적절히 배치하여 아주 독특하면서도 멋진 [눈(SNOW) 결정]을 구현하였습니다. 이것을 보면 정말 웬만한 형상은 카DL의 기본 모듈로 모두 다 구현이 가능할 것이라는 확신이 듭니다. 이것은 매우~ 매우~ 만족입니다.

참, 지난 번에도 이야기한 것처럼, 이와 같은 형상을 만들 때는 연결성도 고려하면서 모듈을 배치해야 하는 것도 잊지 말아야 할 사항입니다. 나중에 LED에 불이 ON 될 때를 고려하면 나름대로 자신만의 규칙성을 가지고 LED에 불이 들어올 때를 상상하며 연결을 하는 것이 좋습니다.
만들어진 형상을 연결을 표시하여 다시 나타내 보겠습니다.

39 ptb diyled (5) 39 ptb diyled (6)

이 중, 십자가 형상은 CON-0 를 이용하여 연결하면 밑판 없이도 연결이 가능할 것 같고, 나머지 형상은 밑판을 대고 카DL을 꽂은 후 뒤에서 CABLE-MM-10이나 CABLE-MM-20과 같은 케이블로 연결하면 될 것 같습니다.

눈결정 형상은 좀 더 복잡한데, 여섯 방향의 메인 직선 형상을 먼저 연결한 다음, 주변의 나머지부분을 연결하는 형태로 된 것을 확인할 수 있습니다. 어쨓거나 자기 자신만의 룰을 이용하여 한 줄로 연결이 되도록 하면 됩니다.
나중에 형상 제작을 위하여 한 가지 팁을 더 말씀드리면 아래와 같이 그림을 그려 놓고 필요한 카DL의 종류와 개수를 적어 놓으면 나중에 모듈을 준비할 때 조금 더 편리할 수 있습니다.

39 ptb diyled (7)

3단계 : 형상 제작하기
자, 이제 설계(디자인)가 완료되었으니 구현할 차례입니다.
모든 카DL을 하나로 모두 연결할 수도 있겠지만 이 경우 전체 LED의 갯수가 너무 많아 제어하기가 어렵기 때문에, 여기서는 4개 그룹으로 나누고 각 그룹마다 아두이노를 하나씩 따로 연결하여 프로그램을 하는 것으로 하겠습니다.

제 1 그룹 연결
ARC 모듈은 기본 형상을 그대로 사용하므로 CON-0 및 CABLE-MM-10 케이블을 이용하여 직접 연결합니다. 최종적으로 만들어진 형상은 아래와 같습니다.

39 ptb diyled (8)

제 2 그룹 연결
BAR, FIGURE, ITEM 모듈도 기본 형상을 그대로 사용하므로 CABLE-MM-20 또는 CABLE-MM-10 케이블을 이용하여 직접 연결합니다. 최종적인 형상은 아래와 같습니다.

39 ptb diyled (9)

제 3 그룹 연결
제 3그룹은 손바닥만한 형상을 설계하여 만든 모듈인데, 이 중 십자가는 아무런 보조 도구 없이 그냥 CON-0를 이용하여 연결하면 되지만, 나머지 형상은 직접 연결만으로는 형상을 만들 수 없으므로 지난번에 살펴본대로 폼보드(2mm) 등을 밑판으로 하여 카DL을 관통하여 모양을 잡고, 뒤쪽에서 CON-0 커넥터와 CABLE-MM-10 또는 CABLE-MM-20 케이블을 이용하여 고정시키는 방법을 사용하여야 합니다. 참, 조립하기 전에 폼보드의 형상은 칼이나 가위 등을 이용하여 미리 알맞게 잘라놓는 것이 좋습니다. 아래는 트리의 경우 앞면과 뒷면의 조립 형상입니다. 직접 연결되는 부분은 CON-0를 이용하여 연결하고 조금 떨어져 있는 경우는 CABLE-MM-10을 이용하여 연결한 것을 알 수 있습니다.

39 ptb diyled (10)

조립을 좀 더 편하게 할 수 있는 팁을 하나 더 알려드리지요. 폼보드 위에 설계한(그린) 도안을 붙이고 이 위에 카DL을 하나씩 순서대로 꼽아가면 눈으로 보면서 조립하는 것 보다는 훨씬 편리합니다. 6가지 형상을 모두 조립한 후의 모습은 아래와 같습니다. 십자가 형상은 CON-0만으로도 연결이 가능하여 밑판없이 제작하였고 나머지 5개 형상은 모두 2mm 두께의 폼보드를 이용하여 밑판을 만든 후 제작하였습니다. 최종적인 형상은 아래와 같습니다.

39 ptb diyled (12)

제 4 그룹 연결
제 4 그룹에 속하는 것은 오직 눈결정 모듈 1개입니다. 제 3그룹의 6개 형상을 제작한 것과 동일한 방법으로 제작하면 됩니다. 최종적인 형상은 아래와 같습니다.

4 단계 : 아두이노 연결하기
이제 만들어진 형상을 제어하기 위하여 아두이노를 연결하도록 하겠습니다. 우리는 스마트폰으로 아두이노를 제어하기로 하였으므로 아두이노에도 무선 모듈을 연결(또는 장착)하여 이를 해결해야 합니다. 스마트폰에서 사용할 수 있는 무선 통신 방식은 와이파이(WIFI)를 이용한 이더넷 통신과 블루투스를 이용한 시리얼 통신이 있는데, 전송하여야 할 데이터의 양이 많지 않으므로 연결하기 쉬운 블루투스 통신 방식을 사용하는 것이 간편하므로 이것을 사용하는 것으로 하겠습니다.

아두이노 UNO를 비롯한 아두이노 모듈은 블루투스 모듈을 내장하고 있지 않으므로 이것을 가능하게 하려면, (1) 블루투스 실드를 장착하여 사용하거나 (2) 블루투스 모듈을 준비하여 케이블로 연결하거나 (3) 아예 블루투스 모듈을 내장한 아두이노를 사용하는 방법이 있습니다. 우리의 경우는 크기와 편의성을 위하여 (3)번 방식을 채택하도록 하며, 여기에 가장 알맞은 아두이노로 JARDUINO-UNO-BTmini(제이씨넷)를 선정합니다.

39 ptb diyled (13)

JARDUINO-UNO-BTmini는 아두이노 UNO와 기능이 호환되며, HC-05 블루투스시리얼 모듈을 내장하고 있는 새끼손가락만한 크기의 모듈입니다. 블루투스 포트 선택 스위치는 HC-05 블루투스시리얼 모듈의 TX/RX 연결 포트를 아두이노 내부의 RX(D0)/TX(D1) 핀으로 연결하거나 D4/D7 핀으로 연결하도록 선택하는 스위치인데, 우리는 이것을 D4/D7로 연결되도록 위치시키고, D4/D7 핀을 SoftSerial 포트로 선언해서 사용할 것입니다. 한편, 카DL 그룹의 첫번째 모듈의 I(Data Input) 핀에 연결할 핀은 임의로 D13으로 할당하겠습니다. 장시간 사용을 염두에 둔다면 안정성을 위하여 JLED-START-1을 JARDUINO-UNO-BTmini와 카DL 사이에 삽입하는 것이 좋지만 짧은 시간 사용하는 것이라면 이것을 생략하여도 무방합니다.

크리스마트 트리 제작에 있어 또 하나 고려할 점은 전원 공급 방식입니다. 몇 개 안되는 모듈을 사용할 때는 USB 케이블을 통하여 제공되는 전원(5V, 500mA)이나, 휴대폰 보조배터리로도 사용이 가능하겠지만, 이번과 같이 한 그룹 당 카DL에 사용된 WS2812B의 개수의 최대치가 약 150개 정도 될 것으로 예상되는 경우는 다른 전원 공급 방법을 사용하여야 합니다. 일단, 필요한 전류량을 계산해보겠습니다.

항목 필요 전류량
WS2812B 1개 (최대) 60mA
WS2812B 150개 (1개 그룹 최대) 9A (60mA X 150)
WS2812B 600개 (4개 그룹 최대) 36A (9A X 4)
WS2812B 600개 (실제 사용 최대) 18A (최대치의 1/2 가정)

이론적인 최대값은 WS2812B의 모든 R, G, B LED가 켜져 있는 상태를 가정한 경우이므로 실제 사용 최대값은 약 1/2 정도로 설정하여도 충분하리라 생각됩니다. 이 경우 전원 공급은 최대 10A짜리 파워서플라이 2개를 사용하여 2그룹씩 제공하여야 할 것 같네요. 물론 4개의 JARDUINO-UNO-BTmini에도 전류를 공급하여야 하는데 이것은 큰 전류량이 아니므로 이것은 한 쪽 파워서플라이에서 함께 공급하면 되겠습니다.

눈결정 그룹에 연결된 모습만 간단하게 나타내면 아래와 같으며, 다른 그룹도 같은 방법으로 연결할 수 있습니다.

39 ptb diyled (14)

5 단계 : 아두이노 스케치 프로그램하기
하드웨어는 모두 완성되었으므로, 이제는 스케치 프로그램을 작성할 시간입니다. 그동안 배운 라이브러리를 이용하여 자신이 원하는 대로 프로그램을 작성하면 되겠습니다. 모든 그룹에 대한 프로그램를 제시하는 것은 양도 너무 많으므로 가장 핵심이 되는 형상인 눈결정에 대한 스케치 프로그램만 살펴보도록 합니다.
스케치 프로그램의 큰 줄기는 아래와 같습니다.

39 ptb diyled (2)

· 블루투스 신호(TX/RX)는 아두이노 D4/D7 핀에 연결되어 있으므로 이것을 SoftwareSerial로 선언하고 처리한다.
· 블루투스 앱을 이용하여 휴대폰으로부터의 [켜짐] 또는 [꺼짐] 명령을 받아, [켜짐] 명령이 오면 LED 동작을 실행하고, [꺼짐] 명령이 오면 LED를 모두 끈다. 따로 명령이 오지 않으면 현재 상태를 지속한다.
· 눈결정 모양은 총 157개의 LED로 구성되는데, 이것을 크게 3부분으로 나누어 프로그램한다. 즉, 처음 108번째까지는 눈(SNOW) 형상의 MAIN 부분으로, 109번째부터 133번째까지는 SUB1 부분으로,

나머지는 SUB2 부분으로 나누어 처리한다.

· 단조로움을 피하기 위해 컬러 및 컬러 변화 시간을 결정할 때 random( ) 함수를 가능한 많이 이용한다.
· 카DL은 밝기가 상당히 밝으므로 눈으로 쳐다 보았을 때 눈이 많이 부시지 않는 정도의 밝기로 처리한다.
· 각 부분의 컬러는 아래의 기준으로 결정한다.
· MAIN : 청색과 녹색의 비중을 강하게 하고, 빨강의 비중은 약하게 함
· SUB1 : 청색과 녹색의 비중을 조금 강하게 하고, 빨강의 비중은 조금 약하게 함
· SUB2 : 청색과 녹색, 빨강 비중을 똑같이 함
· 모든 LED의 컬러가 흰색이 되는 경우와 각 LED의 컬러가 알록달록하도록 하는 경우도 구현한다.

이를 바탕으로 구현한 알고리즘은 아래와 같습니다.
자, 이제 스케치 프로그램을 작성해 보겠습니다. 알고리즘을 보면서 차근차근 구현하면 되겠습니다. 아래를 보시지요.

—————————————————-
#include <Adafruit_NeoPixel.h>
#include <SoftwareSerial.h>

#define CDL 13 // 아두이노(JARDUINO-UNO-BTmini) 연결 핀 = D13
#define NUMPIXELS 157 // 눈결정에 사용된 카DL LED의 총 개수
#define SNOW_NUM1 108 // 눈결정 MAIN 골격에 사용된 마지막 LED 번호
#define SNOW_NUM2 133 // 눈결정 SUB1에 사용된 마지막 LED 번호
#define SNOW_NUM3 157 // 눈결정 SUB2에 사용된 마지막 LED 번호
#define BT_RX 4 // 블루투스가 연결된 RX핀 번호 (소프트시리얼로 연결)
#define BT_TX 7 // 블루투스가 연결된 TX핀 번호 (소프트시리얼로 연결)
#define CMD_ON ‘1’ // 휴대폰에서의 카DL 켜기(ON) 명령어
#define CMD_OFF ‘0’ // 휴대폰에서의 카DL 끄기(OFF) 명령어

int mode=CMD_ON; // 시작은 카DL이 켜진 상태

SoftwareSerial btSerial=SoftwareSerial(BT_RX, BT_TX); // 블루투스 시리얼 핀 할당
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, CDL, NEO_GRB + NEO_KHZ800); // 눈결정 구성 = (개수, 핀번호, 기타)

void setup()
{
pinMode(CDL,OUTPUT);
btSerial.begin(115200); // 115200 baud (JARDUINO-UNO-BTmin 기본 셋팅
pixels.begin(); //
randomSeed(analogRead(0)); // 랜덤 초기값 설정
for(uint8_t i = 0; i<=NUMPIXELS; i++)
pixels.setPixelColor(i,pixels.Color(0,0,0)); // 모든 카DL 꺼진 상태에서 시작
pixels.show();
delay(300);
}

void loop()
{
uint8_t r, g, b, command, dummy;
int i;

if (btSerial.available()) // 휴대폰에서의 명령 검사
{ // 휴대폰의 입력이 있으면
command = btSerial.read(); // 값을 저장하고,
while (btSerial.available()) // 기타 다른 입력이 혹시 있으면
dummy = btSerial.read(); // 모두 버림
if (command == CMD_ON) // [켜기] 명령어면
mode = CMD_ON; // [켜기] 모드 세팅
else if (command == CMD_OFF) // [끄기] 명령어면
mode = CMD_OFF; // [끄기] 모드 세팅
else ; // 그 외의 명령어이면 무시!
}
if (mode == CMD_ON) // [켜기] 모드이면
{
r = random(0,16); // 눈결정의 MAIN은 r, g, b를 약한 불빛으로 랜덤하게
g = random(32,64); // 단, 청색과 녹색이 많이 강하도록
b = random(32,64);
for(i = 0; i<=SNOW_NUM1; i++)
pixels.setPixelColor(i,pixels.Color(r,g,b));
pixels.show();
delay(random(100,1000)); // 지속 시간도 0.1초~1초로 랜덤하게

r = random(0,64); // 눈결정의 SUB1은 r, g, b를 약한 불빛으로 랜덤하게
g = random(32,64); // 단, 청색과 녹색이 조금 강하도록
b = random(32,64);
for(i=SNOW_NUM1+1; i<=SNOW_NUM2; i++)
pixels.setPixelColor(i,pixels.Color(r,g,b));
pixels.show();
delay(random(100,1000)); // 지속 시간도 0.1초~1초로 랜덤하게

r = random(0,64); // 눈결정의 SUB2는 r, g, b를 약한 불빛으로 랜덤하게
g = random(0,64); // 단, 모든 색상 가능
b = random(0,64);
for(i=SNOW_NUM2+1; i<=SNOW_NUM3; i++)
pixels.setPixelColor(i,pixels.Color(r,g,b));
pixels.show();
delay(random(100,1000)); // 지속 시간도 0.1초~1초로 랜덤하게

g = b = random(32,128); r = g/2; // (빨강은 광량을 줄여서 처리하여야 비슷하게 됨)
for(i=0; i<=NUMPIXELS; i++)
pixels.setPixelColor(i,pixels.Color(r,g,b));
pixels.show();
delay(random(100,1000)); // 지속 시간도 0.1초~1초로 랜덤하게

for(i=0; i<=NUMPIXELS; i++) // 눈결정의 LED 각각을 모두 랜덤한 다른 색상으로
{
r = random(0,64);
g = random(0,64);
b = random(0,64);
pixels.setPixelColor(i,pixels.Color(r,g,b));
}
pixels.show();
delay(random(100,1000)); // 지속 시간도 0.1초~1초로 랜덤하게
}
else // [끄기] 모드이면
{
for(i = 0; i<=NUMPIXELS; i++) // 모든 LED를 OFF
pixels.setPixelColor(i,pixels.Color(0,0,0));
pixels.show();
delay(1000);
}
}
—————————————————-

카DL의 색상이나 켜져있는 시간 등을 결정할 때 random() 함수를 많이 사용한 이유는 임의성을 주어 실행시 나타나는 패턴이 단조롭지 않게 하기 위함입니다.

6 단계 : 업로드하고 실행시키기
이제 프로그램까지 준비가 되었으니 업로드하고 실행시켜 보겠습니다.
JARDUINO-UNO-BTmini는 아두이노 UNO 호환이므로 업로드시 스케치 프로그램의 [보드] 선택 항목을 ‘UNO’로 선택하면 되고 나머지 업로드 방법은 일반적인 아두이노와 동일합니다. 자, 그러면 가볼까요? GO~
결과가 어찌 되었을까요?

39 ptb diyled (15)

오우~ FANTASTIC!!! 너무나 아름답습니다.
그동안 한 번도 보지 못했던 환상적인 컬러의 율동입니다.
계속 바라봐도 질리지 않는… 북극에서 오로라를 보는 것과 같은 감흥(?)이…

7 단계 : 트리에 장식하여 크리스마스트리 점등하기
나머지 3개 그룹에 대한 스케치 프로그램에 대한 제작 과정과 프로그램 소개는 생략하도록 하겠습니다. 각 그룹마다 다르게 구성된 카DL의 특징이 살아나도록 개별 스케치 프로그램을 작성하면 되는데, 예를 들어, 싼타나 지팡이 형상의 경우는 모자, 리본 장식 등의 형상마다 특징적인 색상을 갖도록 한다든지, ARC로 구성된 그룹의 모듈에 대하여는 물결이 흘러가는 듯이 컬러와 움직임을 구현하는 등이 그 예입니다. (실제로도 그렇게 구현했습니다.)

39 ptb diyled (16)

이렇게 모든 그룹에 대한 형상 제작과 스케치 프로그램 실행을 개별적으로 확인하였으므로, 이젠 드디어 전체 크리스마스트리를 완성할 시간이 되었습니다. 합동 공연의 모습은 어떨라나요?
아래와 같이 꾸며 놓고… 점등해 보면… 짜잔~!

39 ptb diyled (17)

아, 실제로 보면 컬러의 율동이 너무너무 환상적인데 사진으로는 이 느낌을 나타낼 길이 없네요.
어쨌거나 성공입니다!

8 단계 : 스마트폰으로 끄고 켜기
이제 마지막 마무리 단계로 스마트폰에 앱을 설치해서 스마트폰으로 크리스마트트리를 껐다 켰다 할 수 있도록 해 보겠습니다. 스케치 프로그램은 이미 블루투스로부터 들어오는 ‘ON’, ‘OFF’ 명령에 반응할 수 있도록 작성되어 있으므로 우리는 적당한 블루투스 앱을 스마트폰에 설치하여 실행하기만 하면 됩니다. 블루투스 앱은 상당히 많은 종류가 있는데 어떤 것을 사용하여도 무방하지만 여기서는 제가 익숙한 [Bluetooth Controller(블루투스 컨트롤)]라는 앱을 이용해 아래와 같이 실행해 보겠습니다. (해당 앱은 찾아서 설치하셔야 합니다.)

39 ptb diyled (19) 39 ptb diyled (20)

· [Bluetooth Controller] 앱을 실행(1)하면, 위와 같은 화면(2)이 나타납니다.
· [키설정]을 클릭하면 (3) 화면이 나타납니다.
· [키 이름]과 [데이터 설정]에 각각 화면과 같이 ‘ON’, ‘1’, ‘OFF’, ‘O’을 입력하고 아래쪽으로 스크롤하여 [OK]를 클릭하면 (4)의 화면이 나타납니다.
· [장치검색]을 클릭하여 (5) 화면이 나타납니다.
· ‘JARDUINO-XXXX(4자리수)’를 찾아 (6) 화면이 나타나면서 “연결되었습니다.” 라는 메시지가 나타나면 스마트폰과 JARDUINO-UNO-BTmini가 패어링되어 통신이 가능한 상태가 된 것입니다.
· 이제부터는 ‘ON’ 또는 ‘OFF’를 클릭하는 경우 JARDUINO-UNO-BTmini에 명령이 전달되어 크리스마스트리가 점등되거나 꺼지게 됩니다.

자, 그러면 이제 실제로 [OFF]를 클릭해 보지요. 1초, 2초, 오! 모두 꺼졌습니다. 다시 [ON]을 클릭해보면 1초, 바로 다시 동작합니다. 이것도 문제없이 성공! 다 잘 된 것 같네요.
이렇게 해서 오늘의 주제인 [특별한 크리스마스 트리 제작]은 잘 마무리가 되었습니다. 올해는 독창적이고 멋진 크리스마스 트리를 보면서 새해를 맞을 수 있겠네요. 여러분도 기회가 된다면 한 번 시도해 보시기 바랍니다.
참, 잊을뻔했네요. 마지막으로, [특별한 크리스마스 트리]에 사용된 다양한 형상을 디자인해 주신 신승현님(제이씨넷 디자이너)과 트리 제작 및 스케치 구현에 도움을 준 윤병우님(한밭대학교 학생)께도 깊은 고마움을 표합니다. 수고하셨습니다. 고맙습니다.

카멜레온 DIY LED 기타 응용

39 ptb diyled (21)39 ptb diyled (22)39 ptb diyled (23)

저는 이번 [특별한 크리스마스 트리]를 만들면서 카DL의 응용 범위가 상당히 넓어질 수도 있다는 것을 새삼 느끼게 된 계기가 되었습니다. 부분적으로 만들어 본 사슴, 산타, 눈결정 등의 모양을 만들면서 어떠한 형상도 제작이 가능할 것 같다는 확신도 생겼고, 스케치 프로그램 입장에서도 상당히 다양한 라이브러리를 구현해 볼 수 있는 기회가 되었습니다.

여기에 자세히 소개하지는 않았지만 카DL은 생활 속 소품으로 무드등, 건물 모형 미니어처, 자동차 뒷면 표시등 등의 다양한 DIY 응용에 적용해 본 예가 있으며, 앞으로 여러분의 무한한 상상력이 가미되면 멋진 생활 소품이나 기상천외한 작품도 제작될 수 있으리라 예상합니다. 많은 시도를 기대하겠습니다.

카DL 연재를 마치며

작년 1년은 [너무 쉬운 아두이노 DIY] 연재로, 올해 1년은 [카멜레온 DIY LED 이야기] 연재로 디바이스마트 매거진의 독자 여러분과 만나게 되었는데, 이번 회를 마지막으로 아쉬운 작별 인사를 드립니다. 그동안 두 연재물을 사랑해주신 독자 여러분과 미흡한 글에 지면을 할당해 주신 디바이스마트 매거진 담당자 여러분께 진심으로 감사의 말씀 드리며, 다음 기회에 더 맑고 건강한 얼굴로 만나겠습니다. 안녕히 계십시오.

 

 

 

 

 

 

 

 

Leave A Comment

*