사진들 뭘까요? 마치, 컴퓨터그래픽이나 일러스트처럼 보이는 이 사진은 실제로 카메라로 찍은 사진입니다. 더 놀라운 것은 이것을 납땜을 할 줄 아는 사람들이라면, 누구나 만들 수 있는 마법지팡이같은 것이라는 점입니다. 이것은 인간의 착시로 인해 생긴 잔상효과를 응용한 것으로 응용하기에 따라서 정말 다양하게 활용될 수 있습니다.

 

늘 올린 포스팅중 ATmega 개발보드를 만들어보자(http://zecca.tistory.com/134)에서도 잠깐 다루었던 부분입니다만, 위의 사진들처럼 보일려면 좀 열심히 흔들어야 합니다 ^^;; 제가 개인적으로 만들었던 것들중, 가장 많은 문의메일을 받았던 것들이 바로 이 잔상표시 장치였었습니다. 만들어달라는 분도 계셨고, 회로와 소스를 알려달라는 분, 심지어는 졸업작품 의뢰까지 하는 분들(ㅡㅡ;;)도 계시더군요.

 

찍부터 만들자 마자 바로 회로와 소스를 공개했음에도, 몇년이 지난 지금도 어쩌다 메일이 날라오는 것을 보면, 정말 LED로 만들수 있는 것중 가장 재미있는 녀석이 맞기는 맞나봅니다. 사실, 지금 생각해봐도 제가 만들었던 것중 가장 사람들에게 흥미를 줄 수 있는 회로이기도 합니다.

 

 

선 해외에서 만든 작품을 한번 보겠습니다. 개인의 작품인데요. 별다른 회로는 없습니다. 달랑 IC 한개로 가능합니다. 물론 사용된 IC는 ATmega나 PIC와 같은 MCU입니다. 이런 제품들은 LED를 구동하는데 TR 없이도 충분한 소스전류를 흘릴수 있는 능력이 있기 때문에 이런 회로를 만들때는 되도록 쓸데없는 부품은 사용하지 않습니다. 일단 작게 만들어야 하니까요.

 

진을 보면 시계처럼 만들었습니다. 아주 작고 예쁘네요. 처음 사진처럼 손목에 착용하고, 전원을 켜면, LED가 순차적으로 깜빡입니다. 이 상태로는 몇시인지 알수가 없습니다. 그래서 손목을 좌우로 빠르게 흔들면, 잔상효과에 의해서 시간이 표시됩니다. 허공에 말이죠 ^^;;

 

 

번에는 다른 작품을 보겠습니다. 위의 시계는 멋지지만, 흔들려면 힘듭니다. 흔드는데 있어서 가장 좋은 것은 역시 손목이죠. 왼쪽 작품처럼, 회로에 막대기를 달아서 흔들면, 팔 전체를 흔들지 않고도 허공에 글씨나 그림을 표시할 수 있습니다. ^^ 멋지죠? 아이들이 정말 좋아합니다.

 

걸 응용해서 만든 작품이 오른쪽 작품입니다. 아예 회전축을 만들어서 고속의 모터로 회전을 시켜서 사진처럼 원형의 표시장치를 만들어 낸 것입니다. 세계지도는 물론이고, 다양하게 표시할 수 있습니다. 물론, 이미 이런 제품들이 상용화된 것들이 있어서 아는 분들은 다들 잘 아실겁니다.

 

 

번에는 자작한 제품을 신발에 달아놓은 동영상입니다. 이걸 신고 저녁에 조깅을 하면, 사람들의 반응이 유령이라도 본듯한 얼굴일겁니다. 튀는 것을 좋아하는 10대나 20대 분들에게는 정말 멋진 아이템이 됩니다.

 

 

금 다른 접근 방법입니다만, 이런 방법도 있습니다. 글자 대신에, LED별로 켜고 끄는 것을 조절해서 멋진 신발을 만든 작품이죠. 비보이들이 저녁에 신고 춤을 춘다면, 그야말로 돋보이는 최고의 무대가 될 것 같습니다.

 

러면, 만드는 방법에 대해서 소개를 해보도록 하겠습니다. 이걸 하나하나 단계별로 설명하려면 시간이 많이 드는 관계로, 간단하게 소개만 하고, 댓글이나 추천이 많이 달리면(^^) 나중에 만능기판으로 만드는 방법을 공개하도록 하겠습니다. ㅎㅎ

 

 

선 잔상표시장치의 회로도를 살펴보겠습니다. 실제로 제가 만든다면, 위의 회로처럼 만들지는 않을것 같습니다. 우선 MCU는 최대한 작게 하려면, ATtiny24 정도의 14핀짜리 디바이스를 사용해야 좋습니다. 위의 ATmega32는 LED 구동을 위한 예시일뿐입니다. 그밖에 시계가 아니라 단지 문자를 표시하는 용도라고 한다면, 굳이 외부클럭없이 내부 오실레이터를 사용해도 충분합니다.

 

다가 ATtiny MCU들은 1.8V부터 동작이 가능하기 때문에, LED 구동을 위해 필요한 전류제한 저항도 사용할 필요가 없으므로, 최소의 회로구동은, LED 8개와 MCU 1개, 전원 On/Off를 위한 스위치와 배터리(소형이어야 하므로, 코인전지가 적당)홀더만 있으면 끝납니다. 위에서는 캐소드 구동의 회로이지만, 이는 아래 설명을 캐소드 기준으로 작성했기 때문이며, 실제로는 애노드 구동이 더 좋습니다.

 

의 회로가 만들어져 있다고 가정하고(실제로는 시중에서 위의 회로대로 구성되어 있는 제품들도 많습니다), 보드의 LED 표시부분으로 간단하게 "I LOVE YOU"를 나타낼 수 있도록 해보면 아래와 같습니다. 한 3~4년 전에 작성한 것이라 오래되긴 했지만, 일부러 쉽게 만든 프로그램입니다. ^^

 

 

부러 캐소드구동의 데이터를 사용했습니다. 계산에 익숙한 것은 아무래도 캐소드 구동방식이 더 편리하기 때문입니다만, 애노드 구동일때는 0을 1로, 1을 0으로 바꿔주면 됩니다만, 굳이 헷갈릴 수 있으니 캐소드로 데이터테이블은 작성하고 나중에 C로 짤때 ~(NOT)을 붙여주면 됩니다. 이를 LED에서 표현하기 위해서 MCU에 넣어야 할 소스는 아래와 같습니다.

 

#include <mega128.h>
#include <delay.h>

void main()
{

int a;
a = 50;
DDRA = 0xff;


for(;;){

 

PORTA = ~0x00; delay_ms(a); // 맨처음 공백, PORTA = ~0b00000000; 로 바꿔도 됨.


PORTA = ~0x81; delay_ms(a); // I 문자 표시, PORTA = ~0b10000001; 로 바꿔도 됨.

PORTA = ~0x81; delay_ms(a);
PORTA = ~0xff; delay_ms(a);
PORTA = ~0xff; delay_ms(a);
PORTA = ~0x81; delay_ms(a);
PORTA = ~0x81; delay_ms(a);
PORTA = ~0x00; delay_ms(a);


PORTA = ~0x1e; delay_ms(a); // ♥ 문자 표시
PORTA = ~0x3f; delay_ms(a);
PORTA = ~0x7f; delay_ms(a);
PORTA = ~0xfe; delay_ms(a);
PORTA = ~0x7f; delay_ms(a);
PORTA = ~0x3f; delay_ms(a);
PORTA = ~0x1e; delay_ms(a);
PORTA = ~0x00; delay_ms(a);


PORTA = ~0x3f; delay_ms(a); // U 문자 표시
PORTA = ~0x7f; delay_ms(a);
PORTA = ~0xc0; delay_ms(a);

PORTA = ~0xc0; delay_ms(a);
PORTA = ~0x7f; delay_ms(a);
PORTA = ~0x3f; delay_ms(a);


PORTA = ~0x00; delay_ms(a); // 맨마지막 공백

}

}

 

스는 CodeVision AVR을 사용했습니다. 소스에서 데이터 값은 16진수로 표현했습니다. 우선 첫번째와 두번째 데이터 값들의 뒤에 // 주석으로 2진수로 대체하는 방법을 표시하고, 나머지는 생략했지만, 위의 표에 2진과 16진 데이터가 표시되어 있고 이미 충분히 이해했으리라 생각되어 넣지 않았습니다. 또한 PORTA ~ 문과, delay_ms() 함수가 다른 줄로 되어 있는 것을 한줄로 바꾸었습다. 어차피 C에서 한 명령의 끝은 “;” 인 세미콜론으로 분리하기 때문에, 두줄로 하나 한줄로 하나 동일하죠.

 

히, 이러한 연관이 있는 데이터끼리 위의 소스처럼 분리해서 묶어주면 보기가 편하고, 틀린부분이 있을 경우에 찾아서 수정하기도 편리합니다. 반드시 줄을 분리해야 깔끔한 소스가 되는 것은 아니므로 참고하시면 되겠습니다. 그리고, 앞에서 설명했듯이 블루 LED는 애노드 구동방식인데 비해서 데이터는 캐소드 구동방식으로 되어 있으므로 각 데이터 앞에 “~”를 붙였습니다. NOT의 기호입니다.


일 실험정신이 있다면, NOT 기호인 “~”을 모두 빼버리고 동작시킨다면, 글씨 있는 곳은 켜지지 않고 배경이 켜지는 역상형태가 되는 점도 생각할 수 있습니다. 둘다 재미있는 방법이니 둘다 해보는 것을 추천합니다.

 

제 위의 회로로 만든 보드를 ISP 케이블(ATmega에 데이터를 넣는 케이블)은 빼고 LED가 수직이 되도록 잡은후 좌우로 흔들어 보면, I ♥ U의 문자가 허공에서 나타납니다. 만일 문자폭이 너무 얇거나 너무 두껍게 나타난다면, 흔드는 속도를 조절하거나, 소스에서 각각의 딜레이값인 a = 50;을 수정하면 됩니다. a값이 커지면 커질수록 문자폭이 두껍게, 작을수록 문자폭이 얇게 나오며, a값이 커질수록 흔드는 속도를 빨리, a값이 작을수록 흔드는 속도를 약간 늦춰서 해보시면 됩니다.

 

 

 

저작자 표시 비영리 변경 금지
신고
Posted by zecca371

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. 2012.12.07 13:48 신고
    댓글 주소 수정/삭제 댓글
    간단하지만, 엔터테인먼트적으로 최고이군요^^
    선물로 만들어도 멋지겠습니다.
    • 2012.12.08 21:13 신고
      댓글 주소 수정/삭제
      네, 이걸 어디에 붙이는가에 따라서 다양하게 활용이 가능합니다 ^^
  2. 만능기판?
    2013.01.03 19:21 신고
    댓글 주소 수정/삭제 댓글
    이런~
    댓글이 적어서 만능기판 볼 일은 없겠군요.
    ㅜ,.ㅜ
    • 2013.01.04 02:34 신고
      댓글 주소 수정/삭제
      ^^ 뭐, 꼭 그렇지는 않을수도 있습니다. ^^
  3. 마커스
    2013.01.04 12:43 신고
    댓글 주소 수정/삭제 댓글
    전 이런 diy 임베디드중 제일 만들고 싶은 것이 에어기어에 나오는 것과는 약간 다르지만 자동 스케이트가 제일 만들고 싶더군요. 예전에 당근이에서 영상을 본적이 있는데, 모터제어 방법과 사람의 무게를 실어나를수 있을정도의 스케이트 사이즈에 들어갈수 있는 모터만 있으면 충분히 만들 수 있겠다는 생각이 들던데, 지금 준비하고 있는 일만 마무리 되면 바로 제작착수를 들어가려고 합니다.


    • 2013.01.04 13:13 신고
      댓글 주소 수정/삭제
      Skatey 같은 제품 말씀하시나봅니다.
      제작자료나 회로는 찾기가 쉬운데, 제일 중요한 것은 역시 모터와 배터리겠죠. 기계적인 부분이 좀 비중이 커서, 저도 예전에 만들어보고 싶었지만, 요새는 저렴하면 그냥 구입하는 방향으로 ^^;;
  4. 2013.11.28 22:49
    댓글 주소 수정/삭제 댓글
    비밀댓글입니다


BLOG main image
zecca의 ante-workspace
zecca의 넋두리 공간입니다... 주로 어떤 작업, 구상을 웹에 올리기 전 정리하는 공간(ante-workspace)이죠... 넋두리도 있을테고, 컴퓨터에 관련된 여러정보나, 제품에 대한 수리방법, 팁 등 다양한 정보가 올라오니 많이많이 들러주세요. 아참, 퍼가실때는 반드시 출처를 명기해 주시기 바랍니다. 네이버 오픈캐스트의 경우 어차피 링크 형식이니 그냥 퍼가셔도 됩니다 ^^ by zecca371

공지사항

카테고리

분류 전체보기 (192)
게임기/콘솔 (41)
8비트 컴퓨터 (13)
80's 이전 컴퓨터들 (7)
16/32Bit/웍스테이션 (8)
개조/수리/제작 관련 (30)
게임/애니/음악/영화 (38)
전자회로/설계/MCU (13)
취미/관심분야 (17)
넋두리/주절주절 (17)
비공개 자료들 (8)

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

글 보관함

달력

«   2017/12   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
Total : 721,867
Today : 58 Yesterday : 187