프로그래밍/Arduino & IoT
아두이노로 만든 LED 사인 - LED Matrix 8x8
ryujt
2015. 3. 3. 11:46
- 아이가 가지고 다닐 수 있도록 2mm 하드보드지를 이용하여 박스를 제작하였습니다.
- 폰트 및 박스 제작은 아이에게 맡기고, 납땜 작업을 제가 도와 주었습니다. 코딩은 폰트 부분만 변경 할 수 있도록 미리 준비하고, 나머지는 간략하게 설명하는 것으로 마쳤습니다. 너무 어려워서 지치면 흥미를 잃을 까봐 ^^;
- 크기를 줄이기 위해서 ATTiny 85 칩을 이용해서 만들었습니다.
사용한 부품
- MAX7219 Dot Matrix Module
- ATTiny 85
- 한국에서도 판매합니다만 가격이 좀 비쌉니다.
소스 코드
#include <avr/pgmspace.h> int Max7219_pinCLK = 2; int Max7219_pinCS = 1; int Max7219_pinDIN = 0; void Write_Max7219_byte(unsigned char DATA) { digitalWrite(Max7219_pinCS, LOW); for (int i = 8; i >= 1; i--) { digitalWrite(Max7219_pinCLK, LOW); digitalWrite(Max7219_pinDIN, DATA&0x80); DATA = DATA << 1; digitalWrite(Max7219_pinCLK, HIGH); } } void Write_Max7219(unsigned char address, unsigned char dat) { digitalWrite(Max7219_pinCS, LOW); Write_Max7219_byte(address); Write_Max7219_byte(dat); digitalWrite(Max7219_pinCS, HIGH); } void Init_MAX7219(void) { Write_Max7219(0x09, 0x00); Write_Max7219(0x0a, 0x03); Write_Max7219(0x0b, 0x07); Write_Max7219(0x0c, 0x01); Write_Max7219(0x0f, 0x00); } const int lines = 6; const unsigned char disp1[lines][8] PROGMEM = { { 0x72, 0x8A, 0x8A, 0x73, 0x02, 0x42, 0x40, 0x7E }, { 0x81, 0x87, 0x81, 0xF7, 0x01, 0x39, 0x44, 0x38 }, { 0x32, 0x02, 0x7A, 0x03, 0x32, 0x4A, 0x4A, 0x32 }, { 0x25, 0x25, 0x25, 0x2D, 0x65, 0x95, 0x95, 0x95 }, { 0x3C, 0x42, 0x42, 0x3C, 0x00, 0x24, 0x24, 0xFF }, { 0x3C, 0x42, 0x42, 0x02, 0x0C, 0x10, 0x00, 0x10 } }; void setup() { pinMode(Max7219_pinCLK, OUTPUT); pinMode(Max7219_pinCS, OUTPUT); pinMode(Max7219_pinDIN, OUTPUT); delay(500); Init_MAX7219(); } void loop() { for (int j = 0; j < lines; j++) { for (int i = 1; i < 9; i++) Write_Max7219(i, pgm_read_byte(&disp1[j][i - 1])); delay(500); } }
32-40: 라인만 수정하시면 원하시는 그림이나 문자를 화면에 표시 할 수 있습니다.
Dot Matrix Editor
위의 도트 폰트를 제작 할 때 사용하기 위해 만든 프로그램과 소스 입니다.
유닛 하나가 필요하네요. (https://code.google.com/p/ryulib4delphi/source/browse/trunk/XE2/Strg.pas)
- Ctrl 키를 누르고 있는 상태에서는 마우스가 지나가는 LED 마다 불이 켜집니다.
- 왼쪽 Shift 키를 누르고 있는 상태에서는 마우스가 지나가는 LED 마다 불이 꺼집니다.
- LED를 클릭하면 불이 켜졌다 꺼졌다를 반복합니다.
- 완성 된 글자는 Add 버턴을 클릭하면, 완성 된 폰트 데이터(문자열)이 화면에 추가 됩니다.
- 모두 완성 되면, Play 버턴을 클릭하여 확인합니다.
- 소스 코드 35-40: 라인에 덮어 쓰시고, 작성하신 라인(폰트) 수를 32: 라인의 lines에 입력합니다.
- 아두이노에 스케치를 업로드하시면 작업이 완료됩니다.
하드보드지 도면
- 하드보드지에 붙여놓고 칼로 자른 다음 조각들을 스카치 테잎을 이용해서 붙여서 사용했습니다.
- 하드보드지를 한 번에 자르는 것은 힘이 듭니다. 아이가 작업하다가 칼이 미끄러져 다칠 뻔 한 일이 있었습니다. 처음에는 줄을 긋는다고 생각하고 살며시 그으면 칼이 파여진 홈에 따라서 잘 미끄러지지 않게 됩니다. 그 이후에도 욕심 내지 않고 여러 번 천천히 칼을 그어서 잘라내면 됩니다.
- 가위를 사용하셔도 됩니다. 칼보다는 덜 이쁘게 나오는 것만 빼면 문제 없습니다.