상세 컨텐츠

본문 제목

아두이노로 만든 LED 사인 - LED Matrix 8x8

프로그래밍/Arduino & IoT

by ryujt 2015. 3. 3. 11:46

본문


  • 아이가 가지고 다닐 수 있도록 2mm 하드보드지를 이용하여 박스를 제작하였습니다.
  • 폰트 및 박스 제작은 아이에게 맡기고, 납땜 작업을 제가 도와 주었습니다.  코딩은 폰트 부분만 변경 할 수 있도록 미리 준비하고, 나머지는 간략하게 설명하는 것으로 마쳤습니다.  너무 어려워서 지치면 흥미를 잃을 까봐 ^^;
  • 크기를 줄이기 위해서 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)


Dot Matrix Editor.zip


  • Ctrl 키를 누르고 있는 상태에서는 마우스가 지나가는 LED 마다 불이 켜집니다.
  • 왼쪽 Shift 키를 누르고 있는 상태에서는 마우스가 지나가는 LED 마다 불이 꺼집니다.
  • LED를 클릭하면 불이 켜졌다 꺼졌다를 반복합니다.
  • 완성 된 글자는 Add 버턴을 클릭하면, 완성 된 폰트 데이터(문자열)이 화면에 추가 됩니다.
  • 모두 완성 되면, Play 버턴을 클릭하여 확인합니다.
  • 소스 코드 35-40: 라인에 덮어 쓰시고, 작성하신 라인(폰트) 수를 32: 라인의 lines에 입력합니다.
  • 아두이노에 스케치를 업로드하시면 작업이 완료됩니다.



하드보드지 도면


LED Matrix 8x8.pdf


  • 하드보드지에 붙여놓고 칼로 자른 다음 조각들을 스카치 테잎을 이용해서 붙여서 사용했습니다.
    • 하드보드지를 한 번에 자르는 것은 힘이 듭니다.  아이가 작업하다가 칼이 미끄러져 다칠 뻔 한 일이 있었습니다.  처음에는 줄을 긋는다고 생각하고 살며시 그으면 칼이 파여진 홈에 따라서 잘 미끄러지지 않게 됩니다.  그 이후에도 욕심 내지 않고 여러 번 천천히 칼을 그어서 잘라내면 됩니다.
    • 가위를 사용하셔도 됩니다.  칼보다는 덜 이쁘게 나오는 것만 빼면 문제 없습니다.







'프로그래밍 > Arduino & IoT' 카테고리의 다른 글

Arduino based wireless power  (0) 2015.03.21
중국산 저가형 아두이노 사용 후기  (0) 2015.03.20
RC Car #1  (1) 2015.03.07
error: 'TKD2' was not declared in this scope  (0) 2015.03.05
Sound Effects for Arduino  (0) 2015.03.02

관련글 더보기