반짝반짝 빛의 축제

LED로 멋진 예술작품을 만들어 볼까요?

2015.10.26
동영상 설명


■ 무엇을 만들까요?


여러분들은 [그림 1] 과 같은 불빛들을 본적이 있으실 텐데요. 이런 것들은 LED 불빛을 끄고 켜는 동작을 미리 소프트웨어 코드로 저장해 둬서 실행시킨 겁니다. 좀 더 아름답게 보이기 위해 LED가 마치 하나씩 움직이면서 켜지게 하기도 하지요.


 

[그림 1. LED 방향 표시기]


이번 시간에는 엔트리 아두이노와 LED로 LED 이동 점멸을 만들어 보겠습니다. 점멸은 끄고 켠다는 뜻이고, 이런 점멸을 하나씩 이동하게 만드는 게 우리의 이번 프로젝트 목표입니다.


 

[그림 2. 엔트리 아두이노로 만드는 LED 이동 점멸]





■ 준비물


 

 아두이노(UNO), 1개

 

 USB 케이블, 1개

 

 브레드 보드, 1개

 

 전선, 20개 정도

 

 LED (5mm), 8개

 

 저항 220 옴, 8개



■ 만들어 봅시다!


[1] 하드웨어 연결하기


LED 8개, 220옴 저항, 아두이노를 [그림 3]처럼 연결합니다. 연결하실 때 LED의 긴다리(+)와 짧은 다리(-) 방향을 주의하셔서 꽂아야 합니다. 긴 다리가 전선 쪽, 짧은 다리가 저항을 향하게 연결하면 됩니다.


 

[그림 3. LED 연결 그림]



[2] 엔트리 코딩


영상에서 본 LED 동작은 파란색, 빨간색 LED가 가운데에서부터 불이 켜지고, 그 켜진 불을 양쪽 방향으로 하나씩 이동하게 하였습니다. 그렇게 작동하게 만들기 위해서는 우선 가운데 LED 두 개가 먼저 켜져야겠죠? 그리고 그 다음 LED가 켜지게 하고 그 이전의 LED는 꺼지게 하는 동작을 반복하면 됩니다. 이것이 핵심 내용 입니다.. 



[그림 4. 필요한 변수 6가지]

STEP 1 
 


이 내용을 이제 엔트리 코드로 만들어 봅시다. 가장 먼저 필요한 변수 5가지를 만듭니다. 변수 이름은 [그림 4]에 나와 있습니다. 몇 번 LED를 켜고 끌지 그 LED번호를 계산하는 것으로 on, off 라는 변수가 필요하고, LED가 연결된 아두이노의 핀 번호로 전기신호를 내보낼 때의 핀 번호에 해당하는 ledOn1, ledOn2, ledOff1, ledOff2가 필요합니다. On1, On2, Off1, Off2 이렇게 on, off가 두개씩 필요한 이유는 LED가 가운데에서 두 개를 켜는 걸로 시작해서 양쪽으로 두 개씩 켜고 끄는 동작을 하기 때문입니다.


변수를 다 만들었으면, on 변수는 0으로 해줍니다. 왜냐하면 우리가 만드는 코드는 LED가 아두이노의 2번~9번 핀에 연결된 것이 아닌 0번 ~ 7번 핀에 연결된 경우를 먼저 만들 것이기 때문입니다. 0~7번을 만들어 놓고, 만약 일렬로 정렬된 LED가 1번에서 시작하면 우리가 만든 전체 코드에서 LED를 켜고 끄는 부분만 +1 해주면 되기 때문입니다. 2번에서 시작하면 +2, 3번에서 시작하면 +3만 해주면 됩니다. LED가 0번부터 연결되어 있다고 가정하고  코드를 만들어 놓으면 이처럼 편리합니다.


 

[그림 5. on변수를 이용한 4번 반복코드]



on변수가 0이고, on < 4 까지 반복하게 해줍니다. 쌍둥이 처럼 LED가 양쪽으로 똑같이 켜지고 꺼지기 때문에 총 8개의 LED에서 절반인 4번만 반복하면 되기 때문입니다.


 

[그림 6. LED를 끄기 위한 off변수]


on 변수로 켜진 LED가 다음 번 LED를 켤 때에, 그 이전의 LED를 끄기 위해서 off = on – 1 로 만들어 꺼야 할 LED 번호를 저장해 놓습니다.


 

[그림 7. LED점멸을 위한 변수 계산]

STEP 2 
 


이제 가운데 LED인 3번과 4번에서 on, off 변수를 각각 더하고 빼주어서 LED 선택을 가운데에서 양쪽 끝으로 하나씩 되게끔 해줍니다. ledOn1/2 , ledOff1/2에 저장되는 변수는 3에서 2, 1, 0 이렇게 하나씩 줄어들거나 4에서 5, 6, 7 이렇게 하나씩 늘어나게 됩니다.


 

[그림 8. LED에 디지털 명령 내리기]


STEP 3 
 


ledOn1/2, ledOff1/2가 정해졌으면 이제 LED가 실제로 연결된 아두이노 핀 번호에 맞추어 줍니다. 

왜냐하면 ledOn1/2, ledOff1/2 는 LED가 아두이노의 0번 ~ 7번 핀에 연결된 경우의 번호 값이기 때문입니다.  ledOn1/2, ledOff1/2 에다가 +2를 해주어서 2번 ~ 9번 아두이노 핀 번호로 맞추어 줍니다. 그리고 마지막으로 0.05초 정도 기다리기를 하고 on 변수를 1씩 증가 시켜 줍니다.



여기까지가 엔트리 코드 마지막 입니다. 오늘은 LED 프로젝트의 심화 내용으로서, 8개의 LED를 가운데에서부터 하나씩 양쪽으로 펴져나가게 점멸시켜 봤습니다. 여러분들이 이 영상을 보시고 엔트리 코드 작성을 도전해 보시길 바랍니다. 감사합니다.



■ 관련자료